Я использовал поведение с учетом следующего наблюдаемого.
component1.ts
this._service.searchText(result);
service.ts
private searchSubject= new Subject<any>();
searchText(mission: any) {
this.searchSubject.next(mission);
}
search$ = this.searchSubject.asObservable();
component2.ts
subscriptions: Array<Subscription> = [];
constructor(private _service: service,) {
tempSubscription = _service.search$.subscribe(
(mission: any) => {
console.log("subscribed to search");
if (mission) {
//Code
}
});
this.subscriptions.push(tempSubscription)
tempSubscription = _service.someOtherObservable$((event)=>{
//Code.
});
this.subscriptions.push(tempSubscription)
}
ngOnDestroy(): void {
for (let sub of this.subscriptions) {
sub.unsubscribe();
}
}
Если я удалю subscription.push(tempSubscription)
после подписки на $search, тогда подписка сработает. В противном случае в нем ничего не регистрируется. Также, если я беру разные переменные для хранения вывода обоих наблюдаемых, то это также работает.
Примечание. Тот же наблюдаемый объект подписывается в других компонентах аналогичным образом и работает нормально. Что я делаю неправильно, помещая наблюдаемые в массив, а затем отказываясь от подписки?
subscriptions.push(tempSubscription)
вместоsubscription.push(tempSubscription)
? - person prady   schedule 10.07.2018