Javascript 访问formGroup值时,数值是否显示为空字符串?

Javascript 访问formGroup值时,数值是否显示为空字符串?,javascript,angular,Javascript,Angular,有人能解释一下为什么我的formGroup中的数值显示为空字符串 private formatFormValues(depositDates) { return depositDates.map((depositDate) => { console.log('deposit dates', depositDates); console.log('deposit dates - amount', depositDate.controls.effective

有人能解释一下为什么我的formGroup中的数值显示为空字符串

  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实例,我正在记录它,看起来像这样:

然后我尝试访问此实例中的
,由于某种原因,
金额
始终显示为空字符串,尽管它显示为活动和设置的数值


我是不是因为遗漏了什么/访问了什么而导致了这种情况?

有时候,Angular没有被通知更新表单组的
值。您可以手动调用您的表单组或所需的表单控件。

事实证明,我的
setValue()
调用中有一个选项param,用于停止任何事件的发出,但仍然不理解为什么它会访问amount值,尽管它在我的更改之前存在,答案属于任何能够解释的人。

也许该方法在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
});

还显示html这是在页面加载时运行的,表单组是否需要字符串或数字作为金额?它看起来像是在找一根绳子。这也可能是一个问题,返回时没有等待地图完成。我将在下面的答案中加入一段代码片段。