在Angular 6中,Form.valueChanges
不会自动更新form.touched
属性。这是因为form.touched
属性是由用户与表单交互时触发的,而不是由Form.valueChanges
事件触发的。
要解决这个问题,你可以手动更新form.touched
属性。以下是一个示例代码:
在模板中,你可以使用ngModelChange
事件来更新form.touched
属性。在输入字段中添加以下代码:
然后在组件的代码中,你可以定义一个onNameChange
方法来更新form.touched
属性:
import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'app-form',
templateUrl: './form.component.html',
styleUrls: ['./form.component.css']
})
export class FormComponent {
name: string;
onNameChange() {
this.formNameControl.control.markAsTouched();
}
}
在这个示例中,formNameControl
是一个使用ngModel
指令绑定的输入字段的控件。通过调用markAsTouched()
方法,我们可以将formNameControl
标记为已触摸。
这样,当用户与输入字段交互时,form.touched
属性会被更新并反映出来。