我创建了一个使用PrismJS的自定义服务,并提供了一个调用Prism.highlightAll()的highlightAll()方法。我在组件中使用了HighlightService,以突出显示一个代码块,该代码块是通过angulars http.get方法用本地JSON文件中的HTML异步填充的。
模板部分:
<pre>
<code class=“language-markup“>
{{data}}
</code>
</pre>
Component.ts部分:
this.highlightService.loadData().subscribe(
response => {
this.data = response;
Prism.highlightAll();
}
);
我的问题是,突出显示应用于非异步数据,而不是应用于异步数据,如上面的component.ts部分中所示。如果我触发线
Prism.highlightAll();
通过按钮单击,然后正确突出显示异步数据。这使我认为我正在丢失区域,并且异步接收数据并突出显示以下代码后,dom没有正确更新。即使在ngZone的run()方法中调用Prism的highlightAll()方法也不起作用。
我针对该问题的解决方案是:
ngAfterViewChecked(){
if(dataRetrieved){
Prism.highlightAll();
}
}
我的问题是: 为什么我确实会失去区域?我的解决方案正确还是有更好的方法?
[请告诉我您是否需要更多信息或更具体的代码段]