angular 6 - defaultValue formGroup внутри подписки - PullRequest
1 голос
/ 08 июля 2020

Я использовал наблюдаемую подписку внутри foreach, а внутри подписки я установил значение в 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 из undefined

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();
 }
})

1 Ответ

0 голосов
/ 08 июля 2020

первый блок кода - вы не меняете значение formGroup. вы подписываетесь только на внешний API. поэтому значение formGroup будет изменено только после того, как dependFromAPI выдаст значение.

второй блок кода - я ясно вижу здесь синтаксическую ошибку.

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

второй вариант приведет к ошибке Cannot read property 'formGroup' of undefined, потому что this будет указывать на функцию вместо родительской области, которую вы явно ожидаете. Надеюсь, эта картинка поможет вам увидеть разницу или хотя бы заставит вас улыбнуться (:

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...