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

ber*_*ndg 5 angular2-forms angular

[angular2 RC4 + @ angular/forms module]

我有一个使用OnPush变化检测的组件包含FormGroup.此表单包含一个FormControlasync验证器的表单.

验证完成后(不再pending),视图不刷新.只有input模糊事件才能刷新视图.

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

这个plunker演示了它.

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

Ole*_*nov 6

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

| async的组件上没有任何@Input属性或管道,但只有使用此策略更新视图状态 - 当Input属性更新时(理想情况下使用新对象).所以只是摆脱当前的情况

UPDATE

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

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

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

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