如果可见,如何将Validator设置为必需?

uks*_*ksz 9 angular2-forms angular

我想知道如何将以下形式的Validator设置为Required,仅当表单元素存在时:

<div *ngIf="form.controls.user.value !== 'Admin' && form.controls.user.value ">
        <label>Role:</label>
        <input type="text" ngControl="role">
</div>
Run Code Online (Sandbox Code Playgroud)

我的表格是:

       this.form = this._formBuilder.group({
        user: ['',Validators.required],
        role: ['', Validators.required]
    });
Run Code Online (Sandbox Code Playgroud)

Thi*_*ier 12

在您的情况下,您将创建一个全局验证器.像这样的东西:

this.form = this._formBuilder.group({
  user: ['', Validators.required],
  role: ['']
}, { validator: (group) => {
  if (group.controls.user.value !== 'Admin') {
    return Validators.required((group.controls.role);
  }
  return null;
}});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,表单在以下情况下有效(this.form.valid === true):

  • 用户不为空,不同Admin且角色不为空
  • 用户是 Admin

请参阅此plunkr:https://plnkr.co/edit/UKyRiq p = preview .

有关详细信息,请参阅此问题:


Chr*_*ian 9

您可以使用disable()enable()功能.禁用表单控件时,不会对该控件应用验证.

this.form.controls.user.disable();
this.form.controls.role.disable();
Run Code Online (Sandbox Code Playgroud)