我正在通过服务在两个组件之间共享数据。
示例:
服务等级
private searchValue = new BehaviorSubject(undefined);
currentSearchValue = this.searchValue.asObservable();
changeSearchValue(value: any) {
this.searchValue .next(value);
}
在这里设置新值
searchValueOnChange(value: any) {
this.searchService.changeSearchValue(value);
}
在afterViewInit()方法内的#2组件中,我已订阅了observable,每次更改搜索值时,我都会使用新的搜索值执行搜索。
this.searchSubscription = this.searchService.currentSearchValue
.subscribe(value => {
this.performSearch(value);
});
Also in component #2 in onDestroy() I'm calling unsubscribe
ngOnDestroy(): void {
this.searchSubscription.unsubscribe();
}
当我想重定向到新的URL时,出现问题,成功取消预订searchSubscription,但该值仍然存在。因此,当加载新页面并在afterViewInit方法中调用subscribe时,我仍然可以在subscribe中获得先前的值。如果我叫退订,是否应该得到初始值(未定义)?