Angular2表单值可观察订阅

时间:2017-03-20 12:29:31

标签: angular memory-leaks observable

我正在使用angular valueChanges / FormControl / FormGroup类的FormArray值可观察量,我知道我们总是必须取消“无限的“有价值的可观察者,所以我想知道这是否是这种可观察的情况,我也很高兴知道下次我可以自己找到的方法:)

1 个答案:

答案 0 :(得分:1)

valueChanges将从对象流式更改直到停止。所以,是的,它本质上是一个无限的可观察的。与HTTP调用中的一个observable(一次性事件并触发可观察事件completed函数)不同,valueChanges将永远不会触发completed函数。如果您正在呼叫subscribe,我会将其设置为取消订阅ngOnDestroy功能。

this.sub = this.form.valueChanges.subscribe(....);


ngOnDestroy() {
    if (this.sub) {
      this.sub.unsubscribe();
    }
}

通过触发已完成的函数,我的意思是:

this.form.valueChanges.subscribe(
    data =>  //get data,
    error =>  /error happens,
    completed =>  //  <-- THIS NEVER FIRES IN A VALUECHANGES OBSERVABLE


);