角度6-订阅内的defaultValue formGroup

时间:2020-07-08 17:54:19

标签: angular typescript

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

1 个答案:

答案 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将指向一个函数,而不是您明确期望的父范围。希望这张图片能帮助您有所作为,或者至少让您微笑(:

enter image description here

相关问题