一般来说,更好的实践是将[FormControl]的valueChanges.subscribe()放在ngOnInit()里。
在ngOnInit()中,Angular已经实例化了组件并完成了依赖注入。如果你在构造函数中访问FormControl,可能会面对一些意想不到的问题。而ngOnInit()会在组件初始化完毕后才调用,这是一个更安全的时间点来进行操作,而且更符合Angular的生命周期管理。
这是一个示例,展示了将valueChanges.subscribe()放在ngOnInit()中的做法:
import { Component, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
@Component({
selector: 'app-my-component',
template: `...`
})
export class MyComponent implements OnInit {
myControl = new FormControl();
ngOnInit() {
this.myControl.valueChanges.subscribe(value => {
console.log('Value changed to', value);
});
}
}
这里我们在ngOnInit()中订阅了valueChanges事件,每次FormControl的值变化时都会打印出当前的值。这样写比放在构造函数中更加安全可靠。