Я пытаюсь заставить MathJax и Angular работать вместе. Я использую ngx-mathjax в качестве интеграции MathJax в Angular. Пока это мой код:
<div mathjax>
{{ field | keepHtml }}
</div>
field
содержит смесь html (для форматирования) и MathJax-формул, например, <b>This</b> is an example <b>equation</b>: \( 2x+3=2 \)
. keepHtml
- это пользовательский канал, который использует DomSanitizer, чтобы обойти санитарную обработку html:
import { Pipe, PipeTransform } from '@angular/core';
import {DomSanitizer, SafeHtml} from '@angular/platform-browser';
@Pipe({
name: 'keepHtml',
pure: false
})
export class KeepHtmlPipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {
}
transform(content: string): SafeHtml {
return this.sanitizer.bypassSecurityTrustHtml(content);
}
}
Я хочу вставить отформатированный html вместе с отрисованными уравнениями MathJax. Но я могу запустить только одну вещь:
<div mathjax [innerHtml]="field | keepHtml">
</div>
... работает только один раз, как только обновляется field
, MathJax больше не обновляет уравнение. Когда я делаю
<div mathjax>
{{ field }}
</div>
, html очищается, и поэтому html-теги печатаются как текст. Хотя MathJax-уравнения отображаются и корректно обновляются. Использование keepHtml
-Pipe вне innerHtml
, как в первом фрагменте кода, приводит к ошибке SafeValue must use [property]=binding...
. Как мне заставить все работать вместе?
Редактировать
Это мой MathJax-Config:
MathJaxModule.forRoot({
version: '2.7.5',
config: 'TeX-AMS_HTML',
hostname: 'cdnjs.cloudflare.com'
}),