2017-05-08 17 views
1

角度4 typescriptですのデコレータは、ここで

let isBrowserFactory2=function(@Inject(PLATFORM_ID) platformId: string){ return isPlatformBrowser(platformId);} 

は、次のエラーを取得し、次のコードは有効ではありません。

Decorators are not valid here 

そして、この1

let isBrowserFactory=(@Inject(PLATFORM_ID) platformId: string):boolean=> isPlatformBrowser(platformId) 

Expression expectedエラーを取得します。

  • なぜtypescriptのパラメータデコレータを関数に使用できないのですか?
  • @Inject()を使用して、何かをファクトリメソッドに挿入するにはどうすればよいですか?

答えて

1

コンストラクタで@Injectを使用してください。

isBrowserFactory: boolean; 

constructor(@Inject(PLATFORM_ID) platformId string) { 
    this.isBrowserFactory = this.isPlatformBrowser(platformId); 
} 

あなたがPLATFORM_IDを注入platformIdを宣言しているこの方法です。そして、私はあなたのメソッドisPlatformBrowserを呼び出すことができます私はブール値を返します。

+0

基本的に正しいですが、コンストラクタだけでなく、 'class'メソッドもサポートされています。オブジェクトリテラルの簡潔なメソッドはサポートされていません。 –

+0

@AluanHaddadクラス宣言の前、またはコンストラクタの内部でデコレータを使用しなければならないと思いました。 – SrAxi

+0

デコレータは、クラスメンバ、クラスメンバパラメータ、およびクラス自体に対して有効です。 –

関連する問題