Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 无法将值数组推送到Json类型脚本_Angular_Typescript - Fatal编程技术网

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]=[]