当我试图对Angular' Cookbook'的反应形式验证进行实施时,我遇到了错误。部分,你可以在这里观看:https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#reactive
我试图谷歌这个问题,但我无法找到解决方案。
错误代码是:
对象类型的索引签名隐含有一个' any'型
正在使用以下代码:
onValueChanged(data?: any) {
if (!this.form) { return; }
const form = this.form;
for (const field in this.formErrors) {
// clear previous error message (if any)
this.formErrors[field] = ''; // This sends a error code
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field]; // This sends a error code
for (const key in control.errors) {
this.formErrors[field] += messages[key] + ' '; // This sends a error code
}
}
}
}
formErrors = {
'imei': '',
'deviceTypeId': ''
};
validationMessages = {
'imei': {
'required': 'Imei is required.',
'minlength': 'Imei must be at least 4 characters long.',
'maxlength': 'Imei cannot be more than 24 characters long.',
},
'deviceTypeId': {
'required': 'Device Type is required.'
}
};
我想知道我是否遗漏了至关重要的事情?我的其余代码类似于表单验证指南。
答案 0 :(得分:2)
您可以通过明确指定索引签名类型来解决此问题。例如:
formErrors:{ [key: string] : string; } = {
...
};
validationMessages:{ [key: string] : { [key: string] : string; } } = {
...
};
如果您想忽略这些错误,您只需将any
指定为所提及成员的类型(例如formErrors:any
)或使用 suppressImplicitAnyIndexErrors 编译器选项。