【问题标题】:angular 6 - defaultValue formGroup inside subscribeangular 6 - 订阅内的 defaultValue formGroup
【发布时间】:2020-07-08 17:54:19
【问题描述】:

我在 foreach 中使用了 observable subscribe,在 subscribe 中我在 formGroup 中设置了一个值,但在 foreach 之外我没有从 formGroup 中获取值

ependFromApis.forEach(element => {
 if (this.formGroup.get(element.defaultValue.pathVariable).value) {
    this.http.dependFromAPI(this.formGroup.get(element.defaultValue.pathVariable).value).subscribe(item => {
        this.formGroup.get(element.field).setValue(element.defaultValue.format(item[element.field]));
        this.formGroup.get(element.field).updateValueAndValidity();
    })
 }
})

console.log(this.formGroup.value);

我尝试使用异步 api,但出现错误

无法读取未定义的属性“formGroup”

ependFromApis.forEach(async function(element) => {
 if (this.formGroup.get(element.defaultValue.pathVariable).value) { // Cannot read property 'formGroup' of undefined
    let item = await this.http.dependFromAPI(this.formGroup.get(element.defaultValue.pathVariable).value).toPromise();
     this.formGroup.get(element.field).setValue(element.defaultValue.format(item[element.field]));
     this.formGroup.get(element.field).updateValueAndValidity();
 }
})

【问题讨论】:

  • 是时候选择答案了(:

标签: angular typescript


【解决方案1】:

第一个代码块 - 您不会更改 formGroup 值。您只订阅外部 API。所以formGroup 的值只有在dependFromAPI 发出值之后才会改变。

第二个代码块 - 我在这里清楚地看到一个语法错误。

ependFromApis.forEach(async (element) => { ... }
ependFromApis.forEach(async function(element) { ... }

第二个选项将导致错误Cannot read property 'formGroup' of undefined,因为this 将指向一个函数而不是您显然期望的父作用域。我希望这张照片能帮助你有所作为,或者至少让你微笑(:

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 2020-10-11
    • 2019-11-21
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2017-10-06
    相关资源
    最近更新 更多