1
我有一個情況,我在angular2組件中使用異步管道並將可見性傳遞給它。這工作正常。更改訂閱Angular2異步管道
我想要的是後來,當組件仍然'活着',即:OnDestroy尚未被調用(因此異步管道訂閱),退訂該觀察和訂閱另一個。
我該如何做到這一點?
下面是一些僞代碼揭露這種情況下:
@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[])
}
}
}
這不回答。我需要更改組件類中的異步訂閱。這些方法在異步管道類中聲明並運行。 – Francisco
答案的要點是你不需要關心這個,當你做'this.pack = Observable.of(redWolves:Wolf [])'時,框架爲你做這件事。是什麼讓你覺得你需要手動取消訂閱?你是否有與你發佈的代碼有關的問題? – estus
當我這樣做時,我阻止了瀏覽器。我遇到了需要更改組件類中的訂閱的情況。我會詳細說明:我的初始訂閱是SSE事件,但我也對承諾(對服務器)執行回調。儘管SSEvents流可以正常工作,但我希望在調用回調後將管道預訂重置爲promise(數組)的返回。我相信我可能不得不退訂,但我不確定。 – Francisco