在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属性会被更新并反映出来。