如果可见,如何将验证器设置为必需?
How to set Validator to required if visible?
我想知道如何将以下表单中的验证器设置为必需,前提是存在表单元素:
<div *ngIf="form.controls.user.value !== 'Admin' && form.controls.user.value ">
<label>Role:</label>
<input type="text" ngControl="role">
</div>
我的表格是:
this.form = this._formBuilder.group({
user: ['',Validators.required],
role: ['', Validators.required]
});
在您的情况下,您将创建一个全局验证器。像这样:
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;
}});
在这种情况下,表格在以下情况下有效(this.form.valid === true):
- 用户不为空,与
Admin
不同且角色不为空
- 用户是
Admin
看到这个 plunkr:https://plnkr.co/edit/UKyRiq?p=preview。
有关详细信息,请参阅此问题:
您可以使用 disable()
和 enable()
函数。当表单控件被禁用时,验证不会应用于该控件。
this.form.controls.user.disable();
this.form.controls.role.disable();
在模板中可以这样做 -
<input [(ngModel)]="page.headerImageWidth" [required]="page.isHeaderAvailable">
你应该这样做。
在html中在*ngIf中添加isVisible变量属性
<div *ngIf="isVisible && form.controls.user.value !== 'Admin' && form.controls.user.value ">
<label>Role:</label>
<input type="text" ngControl="role">
在.ts
this.form = this._formBuilder.group({
user: ['',Validators.required],
role: ['', Validators.required]
});
if(this.form.controls.user.disabled == true){
this.isVisible = false;
}
else {
this.isVisible = true;
}
我想知道如何将以下表单中的验证器设置为必需,前提是存在表单元素:
<div *ngIf="form.controls.user.value !== 'Admin' && form.controls.user.value ">
<label>Role:</label>
<input type="text" ngControl="role">
</div>
我的表格是:
this.form = this._formBuilder.group({
user: ['',Validators.required],
role: ['', Validators.required]
});
在您的情况下,您将创建一个全局验证器。像这样:
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;
}});
在这种情况下,表格在以下情况下有效(this.form.valid === true):
- 用户不为空,与
Admin
不同且角色不为空 - 用户是
Admin
看到这个 plunkr:https://plnkr.co/edit/UKyRiq?p=preview。
有关详细信息,请参阅此问题:
您可以使用 disable()
和 enable()
函数。当表单控件被禁用时,验证不会应用于该控件。
this.form.controls.user.disable();
this.form.controls.role.disable();
在模板中可以这样做 -
<input [(ngModel)]="page.headerImageWidth" [required]="page.isHeaderAvailable">
你应该这样做。
在html中在*ngIf中添加isVisible变量属性
<div *ngIf="isVisible && form.controls.user.value !== 'Admin' && form.controls.user.value "> <label>Role:</label> <input type="text" ngControl="role">
在.ts
this.form = this._formBuilder.group({ user: ['',Validators.required], role: ['', Validators.required] }); if(this.form.controls.user.disabled == true){ this.isVisible = false; } else { this.isVisible = true; }