【发布时间】:2019-11-24 16:22:56
【问题描述】:
我正在使用DomSanitizer 和SafeHtml 将svg 代码注入到我的组件中。我可以在控制台中看到所有元素都在渲染,但它们在我的屏幕上不可见。我正在使用DomSanitizer,因为我正在从数据对象生成代码。这是代码生成的元素的示例
<svg:polyline id="left_arm_line_10" points="67.379982,339.7200012 72.1800003,562.5199585 61.2800064,592.4199829 75.0799942,614.3199463 76.2800064,715.4199829 81.2800064,756.4199829 85.2800064,712.5199585 84.879982,603.5199585 74.7800064,587.5199585 85.6800003,558.2199707 85.379982,347.519989" stroke="black" stroke-width=".22" fill="none" />
直接粘贴在<svg></svg> 标记之间时,它会在屏幕上可见。我正在以这种方式呈现我的svg.component。
<svg:g svg-component [Data]="SvgData"></svg:g>
我制作了一个 stackblitz 演示,您可以使用 view here,我注意到在此演示中 graphic.component 渲染但不是 svg 在模板内。除了所有数据都清楚地显示在需要看到的地方,我可以复制和粘贴输出的 svg 元素,我真的不知道这里出了什么问题。在此之前,我在 svg.component 模板中使用了 <text> 元素来处理 component works 文本,它渲染得很好,所以我真的不明白现在有什么不同。
【问题讨论】:
-
大概他们在错误的命名空间中。
-
你到底是什么意思?
-
好的,我阅读了该文档,到目前为止,我正在按照它建议的方式应用所有内容。你能具体指出我做错了什么吗?
-
也许 DomSanitizer 和 SafeHtml 根本不支持非 HTML 命名空间。