首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在改变角度5的Prism.js上重新渲染ngModel

如何在改变角度5的Prism.js上重新渲染ngModel
EN

Stack Overflow用户
提问于 2018-01-20 10:35:39
回答 1查看 1K关注 0票数 0

我正在构建一个CMS,并且当文章的正文发生变化时,我试图重新呈现Prism.js,以便在预览中显示语法高级化。

模板:

代码语言:javascript
复制
<textarea 
    [(ngModel)]="article.body" 
    (ngModelChange)="onBodyChange($event)" 
    formControlName="body" type="text" name="body"> 
</textarea>

组件( ngAfterViewChecked()工作,但onBodyChange()不工作):

代码语言:javascript
复制
onBodyChange() {
    this.highlightService.highlightAll();
    this.highlighted = true;
}

ngAfterViewChecked() {
  if (this.article && !this.highlighted) {
    this.highlightService.highlightAll();
    this.highlighted = true;
  }
}

有些人建议使用以下方法重新呈现Prism.js,但我对如何实现它感到有点困惑:

Prism.highlightElement(预编码);

这是服务:

代码语言:javascript
复制
import { Injectable, Inject } from '@angular/core';
import { PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';

import 'clipboard';

import 'prismjs';
import 'prismjs/plugins/toolbar/prism-toolbar';
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
import 'prismjs/components/prism-css';
import 'prismjs/components/prism-javascript';
import 'prismjs/components/prism-markup';
import 'prismjs/components/prism-typescript';
import 'prismjs/components/prism-scss';

declare var Prism: any;

@Injectable()
export class HighlightService {

  constructor(@Inject(PLATFORM_ID) private platformId: Object) { }

  highlightAll() {
    if (isPlatformBrowser(this.platformId)) {
      Prism.highlightAll();
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-20 11:54:20

我根据上述评论中的建议解决了这个问题。我只需将this.highlighted设置为真:

代码语言:javascript
复制
ngAfterViewChecked() {
  if (this.article && !this.highlighted) {
    this.highlightService.highlightAll();
    this.highlighted = true;
  }
}

No (ngModelChange)所需的表格:

代码语言:javascript
复制
<textarea 
    [(ngModel)]="article.body" 
    formControlName="body" type="text" name="body"> 
</textarea>

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48355067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档