Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular markForCheck是否对大型组件树的性能有害?_Angular - Fatal编程技术网

Angular markForCheck是否对大型组件树的性能有害?

Angular markForCheck是否对大型组件树的性能有害?,angular,Angular,例如,我有一棵巨大的组件树 Comp1 > Comp2 > Comp3 > ... > Comp99 > Comp100 如果在Comp99中,我使用事件绑定 <Comp100 (event)="onEvent()"></Comp100> 使用自定义指令绑定事件,并且不在此指令内调用markForCheck <div [appBind]="{'click': onClick, 'mousedown': onMouseDown}"&g

例如,我有一棵巨大的组件树

Comp1 > Comp2 > Comp3 > ... > Comp99 > Comp100
如果在
Comp99
中,我使用事件绑定

<Comp100 (event)="onEvent()"></Comp100>
使用自定义指令绑定事件,并且不在此指令内调用
markForCheck

<div [appBind]="{'click': onClick, 'mousedown': onMouseDown}"></div>

编写自定义异步管道,但不要调用
markForCheck
调用,例如,
detectChanges


但是有一种感觉,我错过了一些东西。解决此性能问题的常用技巧是什么?

这是否回答了您的问题?这个理论中的问题不是您的更改检测,而是您的组件树有100个组件深。让angular做这件事,重新思考您的架构,使其更广泛,而不是deeper@JoshuaChan,不,我想知道如何不为所有分支调用cd,并使用事件绑定或异步pipe@bryan60,即使我得到了由10个组件组成的分支,我也不想检查经常触发的某个事件的所有分支。如文本编辑器中的文本/选择更改。或者弹出式移动。在我看来,有更好的解决方案,比如取消公告事件
<Comp100 [onEvent]="onEvent"></Comp100>

onEvent() {}
<div [appBind]="{'click': onClick, 'mousedown': onMouseDown}"></div>