我有一个案例,我在angular2组件中使用异步管道并向其传递一个observable。这很好。
我想要的是以后,虽然该组件仍处于活动状态,即:尚未调用OnDestroy(因此订阅异步管道),取消订阅该observable并订阅另一个。
我怎样才能做到这一点?
这里有一些伪代码来揭露这种情况:
@Component({
selector: 'pack',
template: `
<wolf *ngFor="let wolf of pack | async">
...
</wolf>
`
})
export class PackComponent implements DoCheck {
pack;
constructor(){
this.pack = Observable.of(northwesthernWolves: Wolf[])
}
onDoCheck() {
if(some condition) {
this.pack = Observable.of(redWolves: Wolf[])
}
}
}
答案 0 :(得分:4)
考虑到框架已经发布,可以安全地假设它已经解决了这个问题。实际上,it is so:
/myproj
当新的observable分配给class属性时,旧的observable会被...
if (obj !== this._obj) {
this._dispose();
return this.transform(obj);
}
...
pipe自动取消订阅。
相反的行为会导致内存泄漏,可能会被视为错误。