angular2 form async validation ChangeDetectionStrategy.OnPush =没有视图刷新?

前端之家收集整理的这篇文章主要介绍了angular2 form async validation ChangeDetectionStrategy.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);
   });
 }

猜你在找的Angularjs相关文章