Перезагрузите PrimeJS выделенный код приложения Angular - PullRequest
0 голосов
/ 04 июля 2018

У меня следующий вопрос .. У меня есть приложение Angular 4+, и я использую PrimeJS для обработки подсветки синтаксиса (я следовал учебному пособию Tero https://auralinna.blog/post/2017/code-syntax-highlighting-with-angular-and-prismjs). У меня следующая проблема:

В моем шаблоне компонента у меня есть следующий код:

<pre><code [ngClass]="languageClass">{{ text }}

Как видите, я создаю привязку для обработки другого кода и формата в соответствии с некоторыми условиями в компоненте. По какой-то причине, когда свойства text и languageClass меняются, это не отражается на шаблон. Выделенный код застревает с самым первым значением, установленным в компоненте. Есть идеи, как это решить? Спасибо

1 Ответ

0 голосов
/ 07 июля 2018

Я наконец-то решаю это, вызывая функцию обнаружения изменения шаблона вручную, как только изменяется привязка свойства кода ... код выглядит примерно так:

import { ChangeDetectorRef, .... } from '@angular/core';

@Component({....})
export class MyComponent {
    constructor(private ref: ChangeDetectorRef) {}
    ...
    getSomeText() {
        this.text = null;
        this.ref.detectChanges();
        ...
        this.text = '<foo></foo>';
    }
}

И шаблон компонента:

<pre *ngIf="bodyText !== null"><code>{{ text }}

Как видите, тег исчезнет, ​​как только свойство text изменится на ноль. Затем он будет отображен снова с новым значением, которое будет выделено.

...