2017-06-22 13 views
0

コンポーネントが呼び出すサービスからいくつかのローカル変数の値を操作したいと思います。角度:コンポーネントの@Input/local変数をサービスから直接操作する方法は?

はい、それはObservable(サービス中)に加入することで行うことができますが、コンポーネントに何も追加したくありません。このことを提案している

updating variable changes in components from a service with angular2

component { 
    service.subject.subscribe (_=>{--do stuff here --}) 
} 
Service { 
    subject() -- An observable -- 
} 

私は、サービスが(コンポーネントで)私のローカル変数のいくつかを設定するための責任を負うことにしたいです。このような

何か:

サービス - >いくつかのコンポーネントの変数を呼び出して、それを設定!

これはできますか?はいの場合はどうですか?

+0

いくつかのコードを表示してください...あなたはこれまでに何を試みましたか? – codeSetter

+0

私は質問を編集し、関連コードを追加します –

答えて

1

サービスを使用することのアイデア全体は、それらを独立して再利用可能にすることです。したがって、コンポーネントのプロパティを変更するサービスを持つという考えは、サービスとコンポーネントの密接な結合をもたらします。

このサービスで設定ツールを作成し、そのコンポーネントからコンポーネントインスタンスへの参照(例:

myService.setComponent(this); 

サービスからコンポーネントのプロパティを変更することができます。しかし、再び、私はこのルートに行くことをお勧めしません。

+0

迅速な答えYakovに感謝します。はい、それは密接に結合したエンティティにつながります。私が実際にこれを行う予定は、他のサービスが使用するコンポーネントマニピュレータサービスを作成することです。 基本的に私が作成しているのは、デフォルトでは、コンポーネントが(Choice)コンポーネントを書くことなく 'HTTPリクエストの関連エラー'を表示するようないくつかの冗長なものを扱うモジュールです。 –

+0

このルートを進める場合は、メソッドsetErrors()を宣言するインターフェイスを作成し、各コンポーネントで実装するようにして、サービスが各コンポーネントで同じメソッドを呼び出すようにします。これは、締め付け結合を幾分減少させる。 –

関連する問題