为什么我的Angular2模板的一小部分即使没有更改也会继续重新渲染?
我有一个Angular2组件,它根据来自无头CMS的数据呈现页面片段。特别是,该组件使用如下模板呈现页脚:为什么我的Angular2模板的一小部分即使没有更改也会继续重新渲染?,angular,Angular,我有一个Angular2组件,它根据来自无头CMS的数据呈现页面片段。特别是,该组件使用如下模板呈现页脚: <div class="footer"> <div class="row"> <div class="col s12 m6" *ngFor="let column of footer"> <div [innerHtml]="sanitizer.bypassSecurityTrustHtml(colu
<div class="footer">
<div class="row">
<div class="col s12 m6" *ngFor="let column of footer">
<div [innerHtml]="sanitizer.bypassSecurityTrustHtml(column)"></div>
</div>
</div>
</div>
其中,this.footer
是一个包含HTML字符串数组的私有变量此.footer
在ngOnInit()
中设置。整个模板比这个大得多
我的问题是,模板的这个特定片段每1-2秒就会重新渲染一次。这使得无法选择在页脚中找到的联系人详细信息,因为选定的HTML节点将被新的(相同的)节点替换,因此选择将被重置
页面的其余部分以类似的方式呈现,但它没有显示此问题。如果我查看Chrome调试器中的元素,我可以看到这个特定片段的s
在被替换时闪烁
我正在记录ngOnInit()
和ngOnChanges()
,但在重新渲染期间,它们不会运行
我不知道是什么导致了这种情况。如果您绑定到视图中的函数,那么每次运行更改检测时都会调用它们 如果
sanitizer.bypassSecurityTrustHtml(列)
为每个调用返回不同的对象实例,Angular将再次呈现[innerHTML]
部分,因为它将其识别为更改
更喜欢将函数结果指定给组件中的属性,并将此属性绑定到视图。Mmm。。。。这是一个很好的小陷阱。显然,即使参数相同,函数结果也是不同的实例。通常情况就是这样,除非结果被缓存并且函数返回缓存结果。但是在这种情况下,您可以只绑定到缓存,只在参数更改时调用函数。