我正在与父母进行孩子之间的交流,并且两者都正在渲染某些数据集。 有一个要求,就是我想在父组件的某个事件的click(click)上禁用更改检测周期,因为该更改不会影响我的孩子。
说
<button click="myMethod()"></button>
<child-component [somedata] ="somedata"> </child-component>
export ParentComponent {
//methodCall() {
//this method has been called
// i want to disable change detection cycle here}
}
我尝试过较早的ngZone,但是单击后无法停止该循环,只有我们可以按计时器暂停屏幕。 另外ChangeDetectionStrategy.OnPush无法正常工作。请有人帮忙。
答案 0 :(得分:0)
您应该使用
ChnageDetectionStrategy.OnPush
用于此目的的方法。
您可以这样注释子组件:
@Component({
selector: 'tooltip',
template: `
<h1>{{config.position}}</h1>
{{runChangeDetection}}
`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class TooltipComponent {
@Input() config;
public test() {}
}
OnPush策略可确保仅在此组件的输入属性更改时对此组件运行更改检测。
答案 1 :(得分:0)
创建一些服务,您可以在其中存储数据。在此服务中,将字段添加为可观察到的字段,该字段将发送布尔值。随时随地订阅此观察报。
服务摘要:
access$ = new BehaviorSubject(true);
changeAccess(state: boolean) {
this.access$.next(state);
}