原始/有效未在文本框中更新

时间:2018-08-07 18:47:42

标签: angular

谁能解释为什么有效或原始检查不会更新?输入名称会更改模型值(model.firstname),但是如果我在测试用例中将名称长度设置为1个字符,则当我希望它违反最小长度要求4时,它不会显示错误。

<label for="firstname">First Name</label>
<input type="text" class="form-control" id="firstname" required [(ngModel)]="user.firstname" 
  name="firstname" #namecontrol="ngModel">
<div [hidden]="namecontrol.valid || namecontrol.pristine" class="alert alert-danger">
  Name is required
</div>

我的组件

 @Input() user:GcUser;
 editUserForm:FormGroup;

......

ngOnInit(): void {
  this.editUserForm = new FormGroup({
    'firstname': new FormControl(this.user.firstname, [
      Validators.required,
      Validators.minLength(4)
    ])
  });

}

根据以下建议进行更改后,即可实施反应式表单

TypeError: Cannot read property 'valid' of undefined

1 个答案:

答案 0 :(得分:1)

<罢工> 您应该更改export function output(functions: Function[], inputs: unknown[]) { for (let func of functions) { console.log(`=== ${func.name} ===`); for (let input of inputs) { console.log(`"${input}"\t-> ${func(input)}`); } console.log(); } } 的{​​{3}}设置以对'change'进行更新:

console.log(`=== ${func.name} ===`);

这当然无济于事,因为默认值为'change'。您的问题是您将所谓的反应形式(FormGroup / FormControl)与模板驱动的形式(NgModel)结合使用。为了获得所需的结果,您必须将模板更新为此:

FormControl