Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何将validatiors添加到formcontrol,并使用反应式表单从Angle material输入matchip_Angular_Angular Reactive Forms_Angular Material 7 - Fatal编程技术网

Angular 如何将validatiors添加到formcontrol,并使用反应式表单从Angle material输入matchip

Angular 如何将validatiors添加到formcontrol,并使用反应式表单从Angle material输入matchip,angular,angular-reactive-forms,angular-material-7,Angular,Angular Reactive Forms,Angular Material 7,我正在从Angular5迁移到Angular7,我发现在同一个元素中使用ngmodel和formcontrolName在Angular6中被弃用,在Angular7中被删除。现在,我无法将验证器设置为来自角度材料的mat芯片输入 html: 现在,即使formControl中有值,它也不会满足Validators.required 在花时间研究之后,我发现加上这个 this.form.controls['names'].updateValueAndValidity() 满意的验证器。需

我正在从Angular5迁移到Angular7,我发现在同一个元素中使用ngmodel和formcontrolName在Angular6中被弃用,在Angular7中被删除。现在,我无法将验证器设置为来自角度材料的mat芯片输入

html:

现在,即使formControl中有值,它也不会满足Validators.required

在花时间研究之后,我发现加上这个

    this.form.controls['names'].updateValueAndValidity()
满意的验证器。需要,但现在我得到这个错误

Error: No value accessor for form control with name: 'names'

我知道你的问题是关于角度材料的,但你可以简单地用我的代码替换,但这是通过反应式表单技术和引导4显示验证来验证表单控件输入字段的最佳方法。首先,您需要为表单编写一些代码:在html部分:

  <form [formGroup]="myForm">
   <div class="form-group">
   <label for="name">first Name: </label>
   <input type="text" class="form-control" formControlName="firstName" id="name">
   <div *ngIf="firstName.touched && firstName.invalid" class="alert alert-danger">
   <div *ngIf="firstName.errors.required">filling name is required!</div>
   </div>
 </div>
 </form>
现在您可以看到验证正在工作。现在,要为输入字段指定样式以显示无效输入周围的红色边框,只需转到组件的css文件并将此类添加到css文件:

    /// invalid
  .form-control.ng-touched.ng-invalid{border:2px solid red;}

   ///valid
    .form-control.ng-touched.ng-invalid{border:2px solid green;}       

使用这种技术,您不需要使用ng类。

我知道您的问题是关于角度材质的,但您可以简单地用我的代码替换,但这是通过反应式表单技术和引导4显示验证来验证表单控件输入字段的最佳方法。首先,您需要为表单编写一些代码:在html部分:

  <form [formGroup]="myForm">
   <div class="form-group">
   <label for="name">first Name: </label>
   <input type="text" class="form-control" formControlName="firstName" id="name">
   <div *ngIf="firstName.touched && firstName.invalid" class="alert alert-danger">
   <div *ngIf="firstName.errors.required">filling name is required!</div>
   </div>
 </div>
 </form>
现在您可以看到验证正在工作。现在,要为输入字段指定样式以显示无效输入周围的红色边框,只需转到组件的css文件并将此类添加到css文件:

    /// invalid
  .form-control.ng-touched.ng-invalid{border:2px solid red;}

   ///valid
    .form-control.ng-touched.ng-invalid{border:2px solid green;}       

使用这种技术,您不需要使用ng类。

谢谢您的回答,但您的方法仅适用于正常输入。mat芯片输入与此不同,您不能将formControlName添加到输入字段。谢谢您的回答,但您的方法仅适用于正常输入。mat芯片输入与此不同,您不能将formControlName添加到输入字段。
  myForm = new FormGroup({
  'firstName':new FormControl('',Validators.required)

  })
    //getter method
   get firstName(){
   this.myForm.get('firstName');
   }
    /// invalid
  .form-control.ng-touched.ng-invalid{border:2px solid red;}

   ///valid
    .form-control.ng-touched.ng-invalid{border:2px solid green;}