垫选择时垫错误无法正常工作



我正在制作一个表单,如果没有值,我想添加一个错误抛出。

对于文本输入,这是可以的,但对于<mat-select>,它不起作用。

以下是.ts文件中选择的垫子的声明:

{
id: 'role',
label: marker('USER.role'),
type: 'select',
values: [],
control: new FormControl('', [Validators.required]),
required: true
}

以及HTML:

<mat-form-field class="block" *ngIf="field.type == 'select'">
<mat-label>{{ field.label | translate }}</mat-label>
<mat-select [(value)]="field.control.value" [required]="field.required">
<mat-option *ngFor="let option of field.values" [value]="option['id']">{{ option['label'] }}</mat-option>
</mat-select>
<mat-error *ngIf="field.control.invalid">{{ getErrorMessage(field.id) }}</mat-error>
</mat-form-field>

getErrorMessage是这样的:

getErrorMessage(field: any) {
let error = undefined;
this.userForm.forEach(element => {
if(element.id == field)
if (element.required){
error = this.translate.instant('AUTH.field_required');
}
})
return error
}

感谢

您可以使用getError方法访问FormControl中的错误。

https://angular.io/api/forms/AbstractControl#getError

getErrorMessage(field: any) {
let error = undefined;
const formControl = this.field.control as FormControl;
if (formControl.getError('required')){
error = this.translate.instant('AUTH.field_required');
}
})
return error
}

您是否使用反应式表单?我的问题是,我正在初始化FormGroup,并将该字段的id设置为零。我将其更改为默认值",并开始显示验证。

myForm = new FormGroup({
'dropdown': new FormControl('', Validators.required)
});

在此之前,我传递了一个参数并将该参数设置为零,这样我就可以调用一个函数来初始化新记录的窗体或编辑现有记录。

中选择选项我认为更好的方法是onChange并使用以下方法强制错误:

setErrors({ required : true }) 

如何替代onChange

formGroup.valueChanges.subscribe((control) => ...

祝好运

最新更新