加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular2 form async validation ChangeDetectionStrategy.OnPus

发布时间:2020-12-17 17:39:45 所属栏目:安全 来源:网络整理
导读:[angular2 RC4 @ angular / forms module] 我有一个使用包含FormGroup的OnPush更改检测的组件. 此表单包含一个带有异步验证器的FormControl. 验证完成后(不再有待处理),视图不会刷新. 只有输入模糊事件才能刷新视图. 如果我删除OnPush更改检测,它可以正常工
[angular2 RC4 @ angular / forms module]

我有一个使用包含FormGroup的OnPush更改检测的组件.
此表单包含一个带有异步验证器的FormControl.

验证完成后(不再有待处理),视图不会刷新.
只有输入模糊事件才能刷新视图.

如果我删除OnPush更改检测,它可以正常工作.

This plunker demonstrates it.

这是一个有角度的错误还是我做错了什么?

解决方法

看起来你错过了使用ChangeDetectionStrategy.OnPush的目标.

您没有任何@Input属性或|组件上的异步管道,但它只是用这个策略更新视图状态 – 当Input属性更新时(理想情况下是一个新对象).所以只是摆脱当前的情况

UPDATE

如果在这种情况下仍然坚持使用OnPush,对于预期的行为,您应该手动触发更改检测.

从’@ angular / core’添加import {…,ChangeDetectorRef};并在构造函数中注入它的实例.

在您的方法中,您必须添加:

uniqueNameAsync(control: FormControl): Promise<{[key: string]:any}>{
   return new Promise(resolve => {
       setTimeout(() =>{
            resolve(null);
            this.changeRef.markForCheck();
      },500);
   });
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读