2017-02-17 2 views
2

このplunkerでは、カスタム注釈を使用してMyModelにプロパティを飾ろうとしています。カスタムデコレータやコメント解除import 'reflect-metadata';でプロパティをコメント解除し、インラインデコレータを持つプロパティが生成されます。角度アプリで反射メタデータまたは同等のものを参照する正しい方法

Error: Cannot resolve all parameters for 'Parser'(?). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'Parser' is decorated with Injectable. at NoAnnotationError.ZoneAwareError 

私はアンコメントだけのインラインデコレータことができますが、エディタでimport 'reflect-metadata';のないあなたは、コードを得ることはありませんメタデータ()についての自動補完とtscエラーはReflectのプロパティではありません。

反射APIを角度で使用する正しい方法は何ですか?

編集:私は、一見、この作業を持っている :あなたはpollyfills.tsimport 'core-js/es7/reflect';を持っていますが、Reflect.metadata()

EDIT2の任意の組み合わせを試してみる場合は、まだProperty 'metadata' does not exist on type 'typeof Reflect'.を取得し、角度/ CLI genratedアプリ@新で
import 'core-js/es7/reflect';import 'reflect-metadata';pollyfills.tsに置き換えて角張っていますが、それらが1つの置換であるのか、それとも影響があるのか​​分かりません。ここの答えは私には分かりません。 Angular2 using either npm reflect-metadata or core-js/es7/reflect

+0

私はちょうどこのエラーに遭遇したとあなたは私がこれまでにそれを持っていたことがわかりましただけです。私はそれを動作させるために何かをインポートする必要はありませんが、もちろん 'ttscは' Reflect'に 'defineMetadata'が存在しないと不平を言っています。私は迷っている – adamk33n3r

答えて

0

私はちょうど助けになるかもしれないthis articleにつまずいた。 「第2の問題」が対処されている部分があなたにとって興味深いと思います。私は角度のアプリケーションでいくつかのメタデータを定義しようとすると同じ問題に直面し、角度がウィンドウとは異なるReflectを提供しているようです。だから、アクセスするウィンドウの反映は私の問題を解決するようです。私が使用:

let reflect = window['Reflect']; 
reflect.defineMetadata(metadataKey, metadataValue, target); 

代わりの

Reflect.defineMetadata(metadataKey, metadataValue, target); 
関連する問題