angular的ChangeDetectorRef
Angular有两种变化检测策略(Change Detection Strategy)
1 |
|
使用
1 |
|
ChangeDetectorRef 是组件的变化检测器的引用
当使用 OnPush 策略的时候,若输入属性没有发生变化,组件的变化检测将会被跳过
1 |
|
- markForCheck() - 当输入已更改或视图中发生了事件时,组件通常会标记为脏的(需要重新渲染)。调用此方法会确保即使那些触发器没有被触发,也仍然检查该组件。在组件的 metadata 中如果设置了 changeDetection: ChangeDetectionStrategy.OnPush 条件,那么变化检测不会再次执行,除非手动调用该方法。
- detach() - 从变化检测树中分离变化检测器,该组件的变化检测器将不再执行变化检测,除非手动调用 reattach() 方法。
- reattach() - 重新添加已分离的变化检测器,使得该组件及其子组件都能执行变化检测
- detectChanges() - 从该组件到各个子组件执行一次变化检测 检查该视图及其子视图。与 detach 结合使用可以实现局部变更检测。
脏数据:就是用户改变了数据,就为脏数据。
在submit时,一定要标记所有的control为脏数据,且更新值和有效性校验。原因是,初始化进入可能不改动数据直接保存,这时会不满足校验规则,但不会触发校验。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!