2017-05-23 12 views
0

私のデータの配列とこのデータを描画するためのさまざまなツールを含むDrawingDataServiceがあります。私はDrawingDataServiceをシングルトンのように私のすべてのツールで使いたいと思っています。角2にインジェクタがありません

私は(それシングルトンインスタンスとして作るために)AppModuleプロバイダリストにDrawingDataServiceを設定します。

export class LineTool extends BaseTool { 

constructor(private injector: Injector) { 

    super(); 

    let drawingDataService2 = this.injector.get(DrawingDataService); 

そして、それはthis.injectorがnullであることを私に言う:その後、私は私のツールでインジェクターを追加

@NgModule({ 
declarations: [ 
    AppComponent 
], 
imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule 
], 
providers: [ 
    DrawingDataService 
], 
bootstrap: [AppComponent] 
}) 
export class AppModule { } 

。 データを格納するためのシングルトンサービスを作成するのがよい方法ですか?

constuctor(private drawingDataService: DrawingDataService) 

そして、あなたは、次の方法でそれを使用することができます:

+2

例が不足しています。インジェクタは、理由なしにnullになることはできません。エラーがあるはずです。クラスには@Injectable()デコレータはありませんか?それがプロバイダの場合は、モジュールにどこに追加されますか?はい、それは良い習慣です。そして、いいえ、injector.getでこれを行う理由はありません。ちょうどサービスを注入してください。 – estus

+0

クラスに '@Injectable()'が設定されていても、同じエラーが発生します。 – papaiatis

答えて

0

は、次の方法でこれを行うにしてください

this.drawingDataService.someMethod() 
関連する問題