【发布时间】:2018-01-02 20:02:28
【问题描述】:
我在 Angular4 中使用响应式表单。我的表格:
this._form = this._formBuilder.group({
id: [''],
name: ['', [Validators.required]],
type: ['', [DropDownValidator.Validate()]],
length: ['', [Validators.required]],
timesPerWeek: ['', [Validators.required]],
workouts: this._formBuilder.array([
this._formBuilder.group({
name: ['', Validators.required],
description: ['', Validators.required]
})
])
});
然后我正在使用使用以下功能的通用验证组件:
// returns false if no error, returns true if error
public IsFieldInvalid(form: FormGroup, field: string, errorType: string){
return form.get(field).hasError(errorType) && form.get(field).dirty;// || form.get(field).hasError(errorType) && form.get(field).pristine && this.IsControlType(form, field, 'radio');
}
然后在 html 中,我通过共享组件传递表单和字段以获得高级“名称”:
<app-field-error-display [displayError]="formValidationService.IsFieldInvalid(_form,'name','required')" errorMsg="Field is required"></app-field-error-display>
你可以看到名字,我没有问题,我只是传递字段名称'name'。
如何访问锻炼数组内的嵌套“名称”,以便在 IsFieldInvalid 函数中作为“字段:字符串”参数接受验证?我尝试了多种方法,但出现了错误。
我尝试过这个错误:
<app-field-error-display [displayError]="formValidationService.IsFieldInvalid(_form,'_form.controls.workouts.controls[i].controls.name','required')" errorMsg="Field is required"></app-field-error-display>
【问题讨论】:
-
错误描述是什么?另外我假设在您的 html 中您正确命名了您的
formGroup?
标签: angular