【发布时间】:2019-03-23 11:15:40
【问题描述】:
我有许多自定义验证器,它们将应用于 Angular 7 中动态生成的响应式表单中的字段。
模板如下所示:
<ng-container class="table-wrapper" *ngIf="!field.hide && field.display === fieldTypes.get('Text')">
<label>
<span class="form-label">{{field.label}}</span>
<span *ngIf="dynForm.controls[field.name].invalid
&& ( dynForm.controls[field.name].dirty || dynForm.controls[field.name].touched )">
{{errorMessageResolver(field, dynForm.controls[field.name].errors)}}
</span>
</label>
<input type="text" name="{{field.name}}" value="{{field.val}}" formControlName="{{field.name}}"/>
</ng-container>
如您所见,我有一个函数可以从表单中提取生成的 ValidationError 并将其提供给以下函数:
errorMessageResolver(field: Field, errors: ValidationErrors) {
console.log('valids=' + field.validations.length);
console.log(errors);
console.log(errors as ValidationErrors);
console.log(errors.hasOwnProperty('required'));
console.log(errors.hasOwnProperty('minLength'));
console.log(errors.minLength);
console.log(errors.hasOwnProperty('maxLength'));
}
我希望你能看到,minLength ValidationError 肯定会被拾起,因为你可以看到控制台输出:
{ minLength: {...}}
但以下尝试的控制台应该显示似乎没有办法获取实际值。那么如何获取密钥及其值呢?
【问题讨论】:
-
它是小写 L 的 minlength。我希望这不会让你感到困惑。
-
你可以在html表单中使用'errorMessage'属性,参考这个链接stackoverflow.com/questions/53920271/…
标签: typescript angular-reactive-forms