我在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'
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();
}
})
答案 0 :(得分:0)
第一个代码块-您无需更改public static int[] twoSum(int[] arr, int target)
{
for ( int i = 0; i < arr.Length; i++ )
{
for ( int j = i + 1; j < arr.Length; j++ )
{
if ( ( arr[i] + arr[j] ) == target )
{
return new int[] { i, j };
}
}
}
}
的值。您只订阅外部API。因此formGroup
的值只有在formGroup
发出值之后才能更改。
第二个代码块-我在这里清楚地看到语法错误。
dependFromAPI
第二个选项将导致错误ependFromApis.forEach(async (element) => { ... }
ependFromApis.forEach(async function(element) { ... }
,因为Cannot read property 'formGroup' of undefined
将指向一个函数,而不是您明确期望的父范围。希望这张图片能帮助您有所作为,或者至少让您微笑(: