使用takeUntil后出现ObjectUnsubscribedError

时间:2018-11-19 21:10:46

标签: angular rxjs

因此,当我将不同的项目加载到屏幕上时,发生了许多HTTP请求。这是基本布局

ngUnsubscribe: any = new Subject();

constructor(private service: Service){}

ngOnInit() {}

BuildView(data) {this.submitLayerservice.submitLayer(onLoadSubmitLayerFormat)
        .pipe(takeUntil(this.ngUnsubscribe))
        .subscribe( //logic happens here 
)
}

ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.unsubscribe();
}

一切正常,我看到在销毁组件时所有请求都被取消了。但是当我再次加载项目时,出现此错误,但没有任何显示。我猜这是因为ngUnsubscribe已经发生了?不太确定。与此相关的大多数问题都与Map有关。

编辑: 如果我不添加this.ngUnsubscribe.unsubscribe();该问题似乎已解决。我是否应该取消订阅该主题?

1 个答案:

答案 0 :(得分:0)

对于任何寻求此方法的人,最有可能是该问题,因为在您输入组件时不会再次创建“订阅”,因此请添加 ngWillEnter或ngDidEnter

ngUnsubscribe = new Subject();

请确保您在进入视图时创建了订阅。