我有一个可响应的地址形式(地址行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输入和表单值更新。
我假设因为更新不在常规的角度线程中,所以它缺少更改,但是我无法解决如何将此更改通知角度-我尝试过的更改检测内容似乎与更新视图而不是表单值。
很抱歉,缺少代码-地址查找是按次付费控件,因此我无法对其建立公共链接。
答案 0 :(得分:1)
我不能放弃...所以我尝试了以下操作,希望它能更新:
this.ngZone.run(() => {
this.changeRef.markForCheck();
});
但是然后随机尝试将更新放入角度区域和宾果游戏中:
this.ngZone.run(() => {
this.line1.setValue(returnedAddress.Line1, { emitEvent: true });
});
关键是我到目前为止还没有遇到过的角度区域。