2015-08-25 107 views
1

我创建了一个呈现SVG的组件,它可以正常工作。但是,我想在一个单独的组件中包含该SVG的一部分。然而,当我这样做时,内部SVG不会被渲染 - 我猜测(不知道关于SVG的很多内容)是由于组件的标记不是有效的SVG元素。如何嵌套在Angular 2中渲染SVG的指令?

一个例子可以在this Plnkr中看到。不显示inner-svg-example内的文字。但是,当您在开发人员工具中编辑页面并删除inner-svg-example指令时,它将显示

既然Angular 2不推荐使用指令replace选项,那么解决这个问题的最好方法是什么?

+0

注意:我正在使用Angular 2,因为我想玩与此,所以不使用这不是一个选项。我也没有使用D3,因为生成的SVG不是数据的再现。我希望能够声明性地声明SVG的结构,所以Raphael.js也不是一种选择。 – Vincent

+0

我不确定这一点,但它可能是相关的https://github.com/angular/angular/issues/1632。如果这不能回答你的问题,你应该创建一个问题。 –

+0

谢谢埃里克,那似乎是我的用例。我认为“不可行”意味着他们不会支持它。 – Vincent

回答

0

代替使用元件选择器的使用它作为一个属性选择g一些有效的SVG标签

<inner-svg-example></inner-svg-example> 

解决它

<g inner-svg-example></g> 

更多在它需要指定svg:在应该添加的svg元素前面,在你的情况下,它是

<text>...</text> 

<svg:text>...</svg:text> 

基于this blog post
@John's answer帮助另一个类似的问题
Demo Plnkr

你plnkr使用早期版本angular2的,change log支持SVG

+0

你好在angular2中做这项工作,即时尝试相同,但它odesnt渲染任何东西UI –

+0

使用angular2检查它创建的答案中的plnkr链接。 – Bhavik

+0

我看到你正在使用的angualr版本是@ 2.0.0-rc.1。它正在使用较旧的rc版本,但不适用于最新的角度版本2。请您尝试一次 –