forms - 选择地址时, Angular 形式不验证

标签 forms angular validation

表单使用 google place api 获取地址,但点击地址(或使用键盘选择地址)不会触发表单的重新验证?

https://plnkr.co/edit/LgEn9t0X2h6BTHGwyJOW?p=preview

我使用更新值

this.registrationForm.patchValue({ adress: adress.formatted_address});

并尝试使用这些方法手动触发验证

this.registrationForm.markAsDirty(true);

this.registrationForm.updateValueAndValidity();

但无法让它工作。

最佳答案

由于 place_changed 事件在 Angular 区域外触发,我建议我们应该像这样调用 zone.run()

constructor(private zone: NgZone) {}

...
google.maps.event.addListener(this.autocomplete, 'place_changed', () => {
    const place = this.autocomplete.getPlace();
    this.zone.run(() => this.invokeEvent(place));

<强> Forked Plunker

另请参阅

关于forms - 选择地址时, Angular 形式不验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44189424/

相关文章:

angular - 如何使用 Ionic 4 创建 Accordion 列表?

javascript - 返回 html 上的 Angular 2+ onmouseover 事件

jquery - 表单验证电子邮件 jquery 插件

php - 我的 html 表单没有使用 php mysql 将值发布到数据库中

javascript - 根据输入内容勾选/取消勾选复选框

Angular 6 - 获取 FormGroup 上所有更改的值

php - 有什么方法可以使用 Laravel 的验证语法来验证外键吗?

typescript - 如何允许 `null` 作为 Yup 模式中的默认值,同时仍然不允许提交 `null`?

javascript - 如何使用 OnChange 提交和形成目标到 iFrame

javascript - keyup 13 事件重复隐含提交 - 输入问题时提交表单