2017-10-21 19 views
0

私は角型アプリでクラスに注入しようとしている列挙型を持っています。クラスにこの列挙型を認識させるにはどうすればよいですか?

私はエラーに列挙型の性質を認識してもらうためにtypescriptですを取得することはできませんProperty 'xs' does not exist on type 'appBreakpoints'

コード:私はので、私はそれらを使用することができます列挙型プロパティを認識するtypescriptですを取得できますか

// appBreakpoints.ts file 
export enum appBreakpoints { 
    xs = 1, // convert xs to truthy value 
    sm, 
    md, 
    lg, 
    xl, 
    xxl 
} 

// In app.module 
import { appBreakpoints } from './appBreakpoints' 
@NgModule({ 
    providers: [ 
     { provide: appBreakpoints, useValue: appBreakpoints} 
    ] 
}); 

// In some service 
import { appBreakpoints } from './appBreakpoints'; 
import { Inject } from '@angular/core'; 
class MyClass { 
    constructor(@Inject(appBreakpoints) private appBreakpoints: appBreakpoints) { 
     if (0 < this.appBreakpoints.xs) { // TS ERROR: Property 'xs' does not exist on type 'appBreakpoints' 
      console.log('something being logged'); 
     } 
    } 
} 

私のクラスで?

答えて

0

しかし、あなたがあなたのコンストラクタで注入するタイプappBreakPointsのものであり、したがって、appBreakpointsのインスタンスことになっているのに対し、問題は、提供された値は、列挙型appBreakpoints(つまり、列挙型クラス自体)であるということである(つまり、 xs、smなど)。あなたのコードを動作させるために

、あなたは、このために

constructor(@Inject(appBreakpoints) private bp: typeof appBreakpoints) { 
    if (0 < this.bp.xs) { 
     console.log('something being logged'); 
    } 
} 
+0

おかげにサービスを変更する必要があります。それは私のコードが動作している。私はapp-configファイルにenumを持っていて、enumが必要な他のサービスで利用できるようにしたいだけです。 – Jonathan002

0

なぜこのような角度のDIを使いたいのですか?私はこの角度/ CLIの問題に応じて、あなたはこの作業を取得するためにInjectionTokenを使用する必要があり、とにかく

// In some service 
import { appBreakpoints } from './appBreakpoints'; 

class MyClass { 
    constructor() { 
     if (0 < appBreakpoints.xs) { 
      console.log('something being logged'); 
     } 
    } 
} 

...単にファイルをインポートし、列挙型を使用して十分に推測:

あなたがすることはできません注入するために純粋なタイプを使用してください。列挙型またはインタフェース。 @jotatoledoが指摘しているように、InjectionTokenを使う必要があります。トークンの使用方法については、Angularのドキュメントに従ってください。私はあなたが直接サービスからそれを使用してのinstedこの列挙の外にサービスを作りたい理由を理解することはできない

https://github.com/angular/angular-cli/issues/8011

https://angular.io/api/core/InjectionToken

関連する問題