Ich verwende einen workingData
Service, der Daten enthält, die meine Anwendung durchdringt. Es gibt eine Observable zum Mock workingData
Objekt zurück.Angular2-Trigger-Funktion, wenn beobachtbare Eigenschaft ändert
@Injectable()
export class WorkingDataService {
getWorkingData(): Observable<WorkingData> {
return Observable.of(WORKINGDATA);
}
getSelectedDate(): Observable<Date> {
return Observable.of(WORKINGDATA.selectedDate);
}
}
Eine Eigenschaft auf dem workingData
Objekt ist ein Datumsfeld selectedDate
genannt.
Dies löst die folgende Funktion (oder es ist incrementDate()
Gegenstück) in der cal-nav
Komponente:
export const WORKINGDATA: WorkingData = {
today: new Date(),
selectedDate: new Date('11-15-2016'),
targetDate: new Date(),
data: []
};
Dieser Wert kann durch Klicken auf den „Vormonats“ oder „nächsten Monat“ Buttons aktualisiert werden
Das Observable aktualisiert die Ansicht in allen Komopnenten, in denen der Dienst workingDate
eingespeist wird, aber ich muss jetzt eine Funktion in derauslösenKomponente (die ein Geschwister der Komponente cal-nav
ist). Wie löst eine Funktion in der month
Komponente jedes Mal workingData.selectedDate
wird aktualisiert, auch wenn es von einer anderen Komponente aktualisiert wird?
UPDATE: Ich abonniere jetzt die selectedDate
Eigenschaft separat.
ngOnInit(): void {
this.getWorkingData();
this.getSelectedDate(); // Just added
}
getSelectedDate(): void{
this._workingDataService.getSelectedDate().subscribe(selectedDate => {this.myFunc();});
}
myFunc(){
console.log('working');
}
Dieser feuert myFunc()
oninit aber nicht, wenn die der Wert Updates.
ich nicht möchte die Funktion auslösen, es sei denn, diese spezifische Eigenschaft ändert sich, nicht das gesamte Objekt. Gibt es einen Weg, das zu erreichen? –
Ja, beobachten Sie diese Eigenschaft separat. – lastWhisper
Zeigen Sie uns ein Beispiel – lastWhisper