Angular 2 - 在控制初始化后添加验证器

时间:2016-11-03 14:44:31

标签: forms validation angular

我想知道如何为已经创建的formControl(使用它自己的Validators创建)添加验证器。但是,让我们想象一下,经过一段时间后我想添加另一个(或者我有一个包含一些验证器的自定义控件),我想创建外部Reactive表单并将内部验证器添加到外部。

有可能吗?我没有找到任何信息(仅关于重新设置所有验证器) 谢谢你的帮助!

  this.testForm = this.fb.group({
      testField: [{value: '', disabled: false}, [<any>Validators.required]]
    })

<form [formGroup]="testForm" novalidate>
  <custom_input>
    formControlName="testField"
    [outerFormControl]="testForm.controls.testField"
    </custom_input>


</form>

之后我想在我的自定义控件中添加其他验证器。我怎么能这样做?

custom_coontrol.ts

this.outerFormControl.push(Validators.maxLength(10));

1 个答案:

答案 0 :(得分:8)

@Component({
  selector: 'my-app',
  template: `
   <form [formGroup]="testForm" novalidate>
    <input type="text" formControlName="age">
   </form>
   <button (click)="addValidation()">Add validation</button>

   {{ testForm.valid | json }}
  `,
})
export class App {

  constructor(private fb: FormBuilder) {
     this.testForm = this.fb.group({
      age: [null, Validators.required]
    })
  }

  addValidation() {
    this.testForm.get('age').setValidators(Validators.maxLength(2));
  }
}

Plunker