第一次当我启动服务并打开组件时,一切都很完美,每个请求都被调用一次。然后我关闭组件并再次打开它,ngOnInit 被调用两次。 我的 ngOnInit QueryDispatcher 和 CommandDispatcher 里面有,所以它们调用了两次,并且 html 中的子组件也有自己的请求/响应,他的 ngOninit 也调用了两次。 对那些人有什么想法吗? 谢谢
kisOnInit(getResponse: GetResponse) {
this.modalService.getData();
if (modalData && modalData.data.seostatudDokumentOid)
{
this.seostatudDokumentOid = modalData.data.seostatudDokumentOid;
this.seostatudDokumentIdList.push(this.seostatudDokumentOid);
}
this.menetlusService.getCurrentMenetlus()
.subscribe((menetlus) => this.menetlus = menetlus);
this.kasutaja = this.authService.currentUserValue;
this.response = getResponse;
this.queryDispatcher
.dispatch(new GetMenetluseFailidRequest(this.menetlus.objektId, this.dokumentObjektId), null, this.destroy$ )
.pipe()
.subscribe((value: GetMenetluseFailidResponse) => {
this.failResponse = value.dokumendiFailList;
});
}
例如 GetMenetluseFailidRequest 被调用两次
组件销毁后,所有订阅都需要取消订阅!
如果您不取消订阅,那么即使您销毁该组件,订阅也会继续存在,并给您留下订阅发生多次的印象!
您可以使用下面的参考代码来阻止这个!
import { Subscription } from 'rxjs';
...
...
export class SomeComponent {
private sub: Subscription = new Subscription();
...
ngOnInit() {
// add all the subscriptions to the sub to unsubscribe altogether
this.sub.add(
this.menetlusService.getCurrentMenetlus()
.subscribe((menetlus) => this.menetlus = menetlus);
);
}
...
ngOnDestroy() {
this.sub.unsubscribe();
}
}