使用反应式表单和 ChangeDetectionStrategy.OnPush 显示验证消息

Dan*_*fer 9 angular2-changedetection angular angular-reactive-forms angular-changedetection

我正在尝试将应用程序迁移到使用ChangeDetectionStrategy.OnPush. 然而,我在尝试使用一些反应形式时遇到了一些阻碍。

我有一个可重用的控件,可以根据某些状态标志(例如*ngIf="control.touched && control.invalid")显示验证消息。我遇到的问题是,无法检测touched标志何时更改,因此无法使用ChangeDetectorRef.

可以通过侦听事件来引用输入元素本身来完成click但这并不能说明何时markAsTouched()使用,并且传递对元素的引用并不总是可行的,而且总是不优雅。

有没有一种方法可以使用OnPush并仍然响应表单控件状态(例如touched),或者只是通常很痛苦?

Eli*_*seo 0

我不知道您是否正在寻找直接使用新 FormGroup 创建 ReactiveForm 的新方法。抱歉,如果我不明白你的问题。例如

//before
this.myForm=this.formBuilder({
   control1:''
   })
//after
this.myForm=new FormGroup({
   control1:new FormControl(''),
},{ updateOn: 'blur' })
Run Code Online (Sandbox Code Playgroud)