![]() |
1
2
在这里,当我使用trackBy时,它解决了这个问题
在ts文件中
注: 案例1:没有routerlinkactive[rla]指令,trackBy工作正常 案例2:rla和trackBy工作正常 案例3:带rla和无trackBy,-->环
如果观察方法调用navItems,则#个方法调用=#个数组中的项。 每次返回数组时,它都会呈现这些值和指令将作用于现有元素,并且这些指令都有挂钩[AfterContentInit,onDestroy],这些挂钩负责添加元素并销毁类。
希望这有帮助!!! 裁判: https://netbasal.com/angular-2-improve-performance-with-trackby-cc147b5104e5 Ref:使用源创建CustomRouterLinkActive以进行调试 https://github.com/angular/angular |
![]() |
2
1
我认为这里的问题是,当您在实例变量中使用数组时,数组总是相同的。我的意思是,每次Angular尝试检测更改时,它都检测到数组是相同的,因此它不会执行进一步的操作。 但是,一旦将实例变量更改为getter,每次调用naviems时都会返回一个新数组。在这种情况下,每次Angular更改检测时,它都会发现一个不同的值。从概念上讲,这些项目是相同的,这并不重要。数组是不同的对象。 我的意思是,在:
但在你改变之后:
为了避免这个问题,您应该使用trackByFunction,如上所述。这样,只有新的/修改的项目才会再次渲染。您也不应该每次都返回一个新数组,只有在数据确实发生了更改时才返回。如果您仍然希望在getter中以友好的方式构造数组,请考虑使用ChangeDetectionStrategy。ON推入组件,然后使用ChangeDetectorRef。markForCheck()表示组件数据已更改,应在更改检测期间对其进行检查。如果不这样做,Angular将永远不会重新启用组件,除非其任何输入属性发生更改。 |
![]() |
Kiara · 根据条件角度显示多个模板 1 年前 |
![]() |
IonicMan · 剑道网格在宽度过大时不显示某些列 1 年前 |
![]() |
Ben5 · 服务器端总是接触FormControl 1 年前 |
|
allforthenoob · 我该怎么分类? 1 年前 |
![]() |
Hugh Jones · 如何创建适用于多个来源的自签名开发证书 1 年前 |
![]() |
jthorn · 角度对象未在HTML中显示 1 年前 |
![]() |
clem · 如何在Angular应用程序中突出显示页面的一部分? 2 年前 |
![]() |
Kael · 在html表格中显示关系api数据-角度 2 年前 |