我明白当组件销毁时,我必须取消订阅某些Observable(例如:具有无限值的Observables),以防止内存泄漏。对于有限的Observables,我不需要这样做,因为它们将会自动完成并自动unsubscribe
。
但是,如果我在组件中创建一个Observable
(例如FormGroup.valueChanges
或QueryList.changes
)并且它是无限的,那么它将随包含它的组件一起被销毁,所以我认为即使我没有取消订阅它,也不会出现内存泄漏。
这里是一个简单的例子:
@Component({})
export class DummyComponent {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
firstName: [''],
lastName: ['']
});
this.form.valueChanges.subscribe(
x => console.log(x)
);
}
}
在这里,我不会从this.form.valueChanges
中 unsubscribe
;当我的组件被销毁时,this.form.valueChanges
也将被销毁。
在这种情况下会出现内存泄漏吗?
this.form.valueChanges
进行了测试)。 - petitcl