【发布时间】:2019-04-15 12:01:15
【问题描述】:
我有一个用例,我需要渲染 HTML 节点并将其转换为 HTML 字符串,然后在该 HTML 字符串中的特定元素上添加 ngx-bootstrap 工具提示指令。
我可以通过使用带有管道的 InnerHTML 或创建一个单独的组件来使 HTML 呈现良好,但总是在呈现 HTML 之后,元素上的工具提示指令未注册,我不知道该去哪里从这里。虽然我会在 PIpe 上使用pure: false 来解决它,但它没有。
这是我用管道尝试过的:
带有工具提示指令的管道
import { documentToHtmlString } from '@contentful/rich-text-html-renderer';
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { BLOCKS, INLINES } from '@contentful/rich-text-types';
import { Store } from '@ngxs/store';
import { DeckState } from '../__states/deck';
@Pipe({ name: 'rich', pure: false })
export class RichContent implements PipeTransform {
constructor(private sanitizer: DomSanitizer, private store: Store) {
}
transform(content) {
let options = {
renderNode: {
[INLINES.EMBEDDED_ENTRY]: (node) => {
return `<b [tooltip]="node.data.target.fields.companyName">${node.data.target.fields.companyName}</b>`
}
}
}
var html = documentToHtmlString(content, options);
return this.sanitizer.bypassSecurityTrustHtml(html);
}
}
HTML
<div [innerHTML]="content | rich"></div>
结果
没有工具提示指令工作或注册的纯 HTML。 例如:
<p>Here is an example from <b [tooltip]="node.data.target.fields.companyName">Mixpanel</b></p>
希望有人可以帮助我并指出正确的方向来解决这个问题。
【问题讨论】:
-
从我的头顶..我认为出于安全原因您不能,您需要编写一个组件。检查Angular HTML binding是否有帮助
标签: angular pipe popover ngx-bootstrap contentful