Angular 中的响应式表单:监听变化
响应式表单实例如 FormGroup 和 FormControl 都有一个 valueChanges 方法,该方法返回一个可观察对象,用于发出最新的值。因此,您可以订阅 valueChanges 来更新实例变量或执行操作。
在这里,我们将创建一个非常简单的示例,每当表单中的值发生更改时,就会更新模板字符串。
首先,让我们使用 FormBuilder 初始化我们的响应式表单:
myForm: FormGroup;
formattedMessage: string;constructor(private formBuilder: FormBuilder) {}ngOnInit() {this.myForm = this.formBuilder.group({name: '',email: '',message: ''});this.onChanges();
}
请注意,在初始化表单后,我们在 ngOnInit 生命周期钩子中调用了一个 onChanges 方法。以下是我们 onChanges 方法的内容:
onChanges(): void {this.myForm.valueChanges.subscribe(val => {this.formattedMessage =`Hello,My name is ${val.name} and my email is ${val.email}.I would like to tell you that ${val.message}.`;});
}
您还可以监听特定表单控件的更改,而不是整个表单组:
onChanges(): void {this.myForm.get('name').valueChanges.subscribe(val => {this.formattedMessage = `My name is ${val}.`;});
}
由于 valueChanges 返回一个可观察对象,因此您可以根据发出的值做任何操作。