我使用了下一个可观察的行为。
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();
}
}
如果我在订阅$ search后删除了subscription.push(tempSubscription)
,则订阅工作。否则,其中没有任何记录。另外,如果我将不同的变量用于存储两个可观察到的输出,那么它也可以工作。
注意:在其他组件中以相同的方式订阅了相同的可观察对象,并且工作正常。 通过将可观察变量推入数组然后取消订阅,我在做什么错了?