Angular 无法将值数组推送到Json类型脚本
我有一个目标Angular 无法将值数组推送到Json类型脚本,angular,typescript,Angular,Typescript,我有一个目标 formErrors = { 'name': [], 'age' : [] }; 我正在从模板驱动的表单动态地向其中添加验证错误。 但是,当我尝试将值推送到键时,它会抛出错误,而当我只是给它分配一个普通字符串时,它就会工作 onValueChanged(data?: any) { if (!this.f) { return; } const form = this.f.form; for (const field in this.fo
formErrors = {
'name': [],
'age' : []
};
我正在从模板驱动的表单动态地向其中添加验证错误。
但是,当我尝试将值推送到键时,它会抛出错误,而当我只是给它分配一个普通字符串时,它就会工作
onValueChanged(data?: any) {
if (!this.f) { return; }
const form = this.f.form;
for (const field in this.formErrors) {
// clear previous error message (if any)
this.formErrors[field] = '';
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.formErrors[field].push(messages[key]); // error line
this.formErrors[field] += messages[key] + ' '; // this works if the change object struct to name :''
}
}
}
}
控制台中的错误是
TemplateDrivenComponent.html:10 ERROR TypeError: this.formErrors[field].push is not a function
at
TemplateDrivenComponent.webpackJsonp.178.TemplateDrivenComponent.onValueChanged (template-driven.component.ts:46)
at template-driven.component.ts:29
at SafeSubscriber.schedulerFn [as _next] (core.es5.js:3840)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:236)
at SafeSubscriber.next (Subscriber.js:185)
at Subscriber._next (Subscriber.js:125)
at Subscriber.next (Subscriber.js:89)
at EventEmitter.Subject.next (Subject.js:55)
at EventEmitter.emit (core.es5.js:3814)
at FormGroup.AbstractControl.updateValueAndValidity (forms.es5.js:2601)
at FormControl.AbstractControl.updateValueAndValidity (forms.es5.js:2605)
at FormControl.setValue (forms.es5.js:2948)
at DefaultValueAccessor.onChange (forms.es5.js:1752)
at DefaultValueAccessor._handleInput (forms.es5.js:619)
at Object.eval [as handleEvent] (TemplateDrivenComponent.html:10)
因为你已经将它初始化为字符串
this.formErrors[field] = '';
push在数组上工作&而不是字符串上
把那行改成
this.formErrors[field] = [];
因为您已将其初始化为字符串
this.formErrors[field]=''
;push在数组而不是字符串上工作。您正在用字符串替换数组this.formErrors[field]=''
我想你是指一个空数组来“清除错误”[]
。不,我想将这些错误消息推送到数组中,空格“”只是在我现在不使用数组时给出间隔array@ParthGhiya谢谢你这么愚蠢的错误,你的最后一行之所以有效,是因为你连接了一个字符串,但是,如果希望它是一个要推送到的数组,则需要通过将get重新初始化为空数组来清除它。this.formErrors[field]=[]