最近Angular 1からAngular 2に移動し、オブジェクトのプロパティの変更を検出しようとする問題が発生しました。オブジェクトのプロパティの変更を角度2で観測する
典型的なユースケースは、I設定を含むオブジェクト、例えば、データの一部を保持する注射サービスを持っているということである。
@Injectable()
export class SettingsService
{
_settings = {
'settingA' : true,
'settingB' : false
}
...
get settings()
{
return this._settings;
}
}
Iは次いで、設定ページなどの成分を有することになります設定サービスから設定を取得します。イオンアプリ:
constructor(private settingsService : SettingsService)
{
this.settings = settingsService.settings;
}
そしてtoggleのようなUIコンポーネントへのオブジェクトのプロパティに直接カップル。問題は、すべてのトグル変更イベントで関数を呼び出すこと以外の点です。サービスまたはコンポーネントのいずれかが、設定オブジェクトがデータストアに設定を保存するような適切なアクションをトリガするように変更されたことをどのように知ることができますか?
Toggleがサービスの変更を取得できるのではなく状態を変更する場合でもBehaviorSubjectを使用する必要があります。 EventEmitterを使用する際の注意点として、他の場所で使用して、サービス内のデータ更新コンポーネントに通知しています。 – cubiclewar