【问题标题】:Angular form don't validate when address is selected选择地址时角度表单不验证
【发布时间】:2017-05-25 20:37:14
【问题描述】:

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

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

我用

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

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

this.registrationForm.markAsDirty(true);

this.registrationForm.updateValueAndValidity();

但不能让它工作。

【问题讨论】:

    标签: forms angular validation


    【解决方案1】:

    由于place_changed 事件在角度区域外触发,我建议我们应该调用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

    另见

    【讨论】:

    • 啊..我假设使用patchValue的表单更新会触发表单重新验证..谢谢! :)
    猜你喜欢
    • 2017-06-02
    • 2015-05-24
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 2021-02-13
    • 1970-01-01
    • 2020-11-01
    相关资源
    最近更新 更多