In meiner Anwendung ausgelöst hat ich BehaviorSubject bin mit Daten von Anbietern zu Seite Komponente zu übergeben:BehaviorSubject: letzten Wert ignorieren, wenn next() nicht
JobsManager
private futureJobsSource = new BehaviorSubject <Array<Job>>([]);
futureJobsUpdate = this.futureJobsSource.asObservable();
Ort, an der Quelle aktualisiert:
getFutureJobs(date: string) {
//
//
this.api.getFutureJobs(request).subscribe((res) => {
console.log(this.TAG + 'getFutureJobs: success: ' + JSON.stringify(res));
this.futureJobsSource.next(res);
}, (err) => {
console.log(this.TAG + 'getFutureJobs: failure: ' + JSON.stringify(err));
this.message.showErrorAlert(err.detail);
});
}
Und meine Komponente, FutureJobsPage
setSearchDate() {
DatePicker.show(this.datePickerOptions).then((date) => {
this.jobsManager.getFutureJobs(moment(date).format('MM/DD/YYYY'));
});
}
ionViewDidLoad() {
console.log('ionViewDidLoad FutureJobsPage');
this.subscription = this.jobsManager.futureJobsUpdate.subscribe((res) => {
console.log(this.TAG + 'subscribe: ' + JSON.stringify(res));
this.futureJobs = res;
});
}
ionViewDidLeave() {
console.log(this.TAG + 'ionViewDidLeave');
this.jobsManager.futureJobsUpdate.distinctUntilChanged();
this.subscription.unsubscribe();
this.futureJobs = [];
}
Als ich von meiner Suche über die richtige Art und Weise verstanden Daten vom Provider BehaviorSubject passieren ist eine optimale Lösung, aber ich möchte zuletzt empfangene Wert weglassen, wenn es nicht aus nächsten war(). Was ist die beste Vorgehensweise, um ein solches Verhalten zu erreichen?
Sie meinen, ignorieren Sie den initialisierten leeren Wert? –
@suraj Hallo, danke für die Antwort. Nein, in meinem Fall erhalte ich den letzten ausgesendeten Wert, und ich möchte diesen Wert ignorieren oder durch ein leeres Standard-Array ersetzen, bis der nächste ausgegeben wird. –
Nicht wirklich klar, wie das funktionieren soll. * Ich möchte den letzten empfangenen Wert weglassen, wenn er nicht von next() * stammt, bedeutet wörtlich, dass Sie kein 'leeres Standard-Array' benötigen und einfach Subject anstelle von BehaviorSubject verwenden können. Wenn dem nicht so ist, scheint mir eine der Aussagen widersprüchlich zu sein. Ein einfaches Beispiel, das aus Angular Stuff mit erklärten Input und Output isoliert wurde, würde helfen. – estus