反应性表单未使用第三方地址查找更新

时间:2018-10-15 02:34:01

标签: angular

我有一个可响应的地址形式(地址行1,地址行2,镇,县,邮政编码,国家/地区),可以正常工作。在开发过程中,我使用{{ myForm.value | json }}查看表单的当前值。

我现在添加了第三方地址查找控件,该控件在选择地址时会触发回调函数。在此回调函数中,我使用从地址查找器返回的值来更新表单控件对象,例如

callback(address:any):void {
    this.line1.setValue(returnedAddress.Line1, { emitEvent: true });
}

其中line1是对创建并添加到FormGroup的FormControl的引用。

调用此回调时,HTML输入控件已使用新的地址行1更新,但整体表单值ISN未更新。

如果我接下来将焦点放在HTML输入控件上,然后将其关闭,则表单值将更新。

如果我通过按钮onclick函数调用相同的更新代码(带有静态测试地址),那么一切都会按预期工作,即HTML输入和表单值更新。

我假设因为更新不在常规的角度线程中,所以它缺少更改,但是我无法解决如何将此更改通知角度-我尝试过的更改检测内容似乎与更新视图而不是表单值。

很抱歉,缺少代码-地址查找是按次付费控件,因此我无法对其建立公共链接。

1 个答案:

答案 0 :(得分:1)

我不能放弃...所以我尝试了以下操作,希望它能更新:

    this.ngZone.run(() => {
        this.changeRef.markForCheck();
    });

但是然后随机尝试将更新放入角度区域和宾果游戏中:

    this.ngZone.run(() => {
        this.line1.setValue(returnedAddress.Line1, { emitEvent: true });
    });

关键是我到目前为止还没有遇到过的角度区域。