[angular2 RC4 + @ angular / forms module]
我有一个使用包含OnPush
的{{1}}更改检测的组件。
此表单包含FormGroup
和FormControl
验证程序。
验证完成后(不再async
),视图不刷新。
只有pending
模糊事件才会使视图刷新..
如果我删除了input
更改检测,则它可以正常工作。
这是一个有角色的错误还是我做错了什么?
答案 0 :(得分:6)
您似乎错过了使用ChangeDetectionStrategy.OnPush
的目标。
您的组件上没有@Input属性或| async
管道,但只有使用此策略更新视图状态 - 当Input属性更新时(理想情况下使用新对象) )。因此,只需摆脱当前案例
<强>更新强>
如果你仍然坚持在这种情况下使用OnPush,对于预期的行为,你应该手动触发变化检测。
添加import {..., ChangeDetectorRef} from '@angular/core';
并在构造函数中注入它的实例。
在你的方法中,你必须添加:
uniqueNameAsync(control: FormControl): Promise<{[key: string]:any}>{
return new Promise(resolve => {
setTimeout(() =>{
resolve(null);
this.changeRef.markForCheck();
}, 500);
});
}