Как установить Validator в required, если он виден?
мне интересно, как я могу установить валидатор в следующей форме на требуемый, только если присутствует элемент формы:
<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]
});
3 ответов
в вашем случае вы создадите глобальный валидатор. Что-то вроде этого:--4-->
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.форма.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">