2016-07-28 5 views
1

angular2 in-memory-web-apiをアプリケーションの一部にのみ設定できるかどうか疑問に思っていました。私は、完成したコンポーネントの外部エンドポイントに到達し、開発段階のコンポーネントのためにメモリ内Web-APIを使用したいと考えています。angle2アプリケーションの一部のメモリ内Web-APIのみ

私はfolowing二つの方法でこれを実行しようとしました:

1 - メインのデータをロードし、私は、メモリ内のエンドポイントに到達するコンポーネントでXHRBackendを変更します。

main.ts

bootstrap(AppComponent, [ 
    ... 
    { provide: SEED_DATA, useClass: InMemoryDataService } 
]); 

inDevelopmentStage.service.ts

@Component({ 
    providers: [ 
     { provide: XHRBackend, useClass: InMemoryBackendService } 
    ] 
}) 

2 - データをロードし、私は、メモリ内のエンドポイントに到達するコンポーネントでXHRBackendを変更します。

inDevelopmentStage.service.ts

@Component({ 
    providers: [ 
     { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server 
     { provide: SEED_DATA, useClass: InMemoryDataService }  // in-mem server data 
    ] 
}) 

私はこの目標を達成することができます方法はありますか?

ありがとうございました!

答えて

0

filipesilvahereで指摘されているように、2番目の方法が有効です。

「 必ずああ、あなたは間違いなくこれを行うことができます。各コンポーネントは、それ自体とそのサブツリー内のすべてのコンポーネントのためのプロバイダを解決するものである自身のインジェクタ、のしている

あなたの第二の例は、働いている必要があります。。

をその成分としては
@Component({ 
    providers: [ 
     { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server 
     { provide: SEED_DATA, useClass: InMemoryDataService }  // in-mem server data 
    ] 
}) 

それはXHRBackendがInMemoryBackendService代わりにHTTP_PROVIDERSによって提供されるサービスであり、サブツリーです。

それはまた、その中の任意の他の成分に適用されることに注意してくださいしかし、サブツリー。たぶんそれは間違っていたのでしょうか? "

Thanks Filipe!

関連する問題