1

我正在开发一个 Angular 4.x 项目,并且有 2 个页面的路由配置正确。

在 page1 上,我订阅了 NgForm 的 valueChanges,如下所示:

this.myNgForm1.valueChanges.subscribe(data => { 
    console.log("Is myNgForm valid ? " + this.myNgForm1.valid); 
});

加载 page1 时,我可以看到“ Is myNgForm valid ? false ”。

然而,当点击链接进入page2时,我发现myNgForm1.valueChanges又被触发了,现在我可以看到“ Is myNgForm valid ? true

有什么想法可以避免在导航到不同页面时触发 myNgForm1 的 valueChanges 吗?谢谢!

4

2 回答 2

1

据我所知,您需要执行以下操作:

this.valueChangesSubscriber = this.myNgForm1.valueChanges.subscribe(data => { 
    console.log("Is myNgForm valid ? " + this.myNgForm1.valid); 
});

然后在类中添加:

ngOnDestroy() {
    this.valueChangesSubscriber.unsubscribe()
}
于 2017-07-19T06:58:59.623 回答
1

退订ngOnDestroy

this.subscription = this.myNgForm1.valueChanges.subscribe(data => { 
    console.log("Is myNgForm valid ? " + this.myNgForm1.valid); 
});

ngOnDestroy() {
  this.subscription.unsubscribe();
}
于 2017-07-19T06:55:57.873 回答