响应式表单实例如 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 返回一个可观察对象,因此您可以根据发出的值做任何操作。