访问formGroup值时,数值显示为空字符串吗?

时间:2019-02-19 11:12:21

标签: javascript angular

有人可以解释一下这里发生的事情吗

  private formatFormValues(depositDates) {
    return depositDates.map((depositDate) => {
      console.log('deposit dates', depositDates);
      console.log('deposit dates - amount', depositDate.controls.effectiveDates.value);
      return {
        effectiveDates: depositDate.controls.effectiveDates.value,
        depositDate: depositDate.controls.depositDate.value,
      };
    });
  }

我有这个depositDates formGroup实例,我正在记录它,看起来像这样: enter image description here

然后,我尝试在此实例中访问values,由于某种原因,amount始终显示为"",尽管显示为活动且已设置数字,但该字符串仍为空价值吗?

enter image description here

我是否在某些地方缺少某些东西/错误地访问了某些东西?

3 个答案:

答案 0 :(得分:2)

也许该方法在map函数完成之前返回了值?您可以尝试下面的代码。

async formatFormValues(depositDates) {
        return new Promise(async (resolve, reject) => {
            resolve(depositDates.map(async (depositDate) => {
                console.log('deposit dates', depositDates);
                console.log('deposit dates - amount', depositDate.controls.effectiveDates.value);
                return {
                    effectiveDates: depositDate.controls.effectiveDates.value,
                    depositDate: depositDate.controls.depositDate.value,
                };
            }));
        });

    }

访问它时,您可以使用:

this.formatFormValues(depositDates).then(resp => {
    // set form values
});

答案 1 :(得分:1)

有时,未通知Angular更新表单组的value。您可以在表单组或所需的表单控件上手动调用updateValueAndValidity

答案 2 :(得分:0)

结果证明,我在setValue()调用中有一个选项参数,以停止任何事件的发出,尽管在更改之前就存在该值,但仍不明白为什么它会访问金额值,答案是可以解释的。