Niedawno przeniosłem się do Angular 2 z Angular 1 i często napotykam problemy próbujące wykryć zmiany we właściwości obiektu (coś, co poprzednio zrobiono przez $ watch).Obserwowanie zmiany właściwości obiektu w Angular 2
Typowy przypadek użycia jest to, że mam usługę iniekcji, który utrzymuje kawałek danych, na przykład obiekt zawierający ustawienia:
@Injectable()
export class SettingsService
{
_settings = {
'settingA' : true,
'settingB' : false
}
...
get settings()
{
return this._settings;
}
}
będę wtedy mają składnik taki jak strona ustawień w aplikacja Ionic że dostanie ustawienia z serwisu ustawienia:
constructor(private settingsService : SettingsService)
{
this.settings = settingsService.settings;
}
i jest bezpośrednio kilka właściwości obiektów do komponentu UI jak toggle. Problem jest inny niż wywoływanie funkcji dla każdego zdarzenia zmiany przełączania, w jaki sposób usługa lub komponent może wiedzieć, że obiekt ustawień zmienił się, aby wywołać odpowiednie działanie, takie jak zapisanie ustawień w składnicy danych?
Wydaje użyciu BehaviorSubject nadal wymaga wywołania funkcji, gdy przełącznik zmienia stan, a nie tylko być w stanie odebrać zmiany w służbie . Dobre uwagi dotyczące korzystania z EventEmitter jednak, użyłem ich gdzie indziej do powiadamiania składników aktualizacji danych w usługach. – cubiclewar