有一个模板:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<g id="tpl1">
<image xmlns:xlink="http://www.w3.org/1999/xlink"
[attr.xlink:href]="param(url)"
[attr.x]="-18" [attr.y]="-30"></image>
</g>
</defs>
<svg:use [attr.x]="25" [attr.y]="25"
[attr.xlink:href]="fullPath()+'#tpl1'">
<param name="url" value="/img.png" />
</svg:use>
</svg>获取错误:
未处理的承诺拒绝:模板解析错误:':svg:param‘不是已知的元素:.
fullPath() -是一个使用LocationStrategy服务检索活动url的函数,它允许我使用,但是现在我使用了param.
发布于 2016-11-26 22:01:56
嗯,解决了,实际上它由两部分组成:
1) - Angular2中的错误。设置CUSTOM_ELEMENTS_SCHEMA没有帮助,至少仍然出现了错误,但是用NO_ERRORS_SCHEMA替换它允许它通过。
@NgModule({
imports: [/***/],
declarations: [/***/],
exports: [/***/],
schemas: [NO_ERRORS_SCHEMA]
})2)不幸的是,在SVG中不能使用,至少在我的想法中是这样的。我被关于SVG2.0的建议迷住了。因此,我的版本中的SVG将无法工作,但我能够使用workaraund,使用CSS vars:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<g id="tpl1">
<circle xmlns:xlink="http://www.w3.org/1999/xlink"
[attr.style]="_sanatizer.bypassSecurityTrustStyle('r:var(--radius)')"
[attr.cx]="-18" [attr.cy]="-30"></circle>
</g>
</defs>
<svg:use [attr.x]="25" [attr.y]="25"
[attr.xlink:href]="fullPath()+'#tpl1'"
[attr.style]="_sanatizer.bypassSecurityTrustStyle('--radius:10')"
></svg:use>
</svg>正如您所看到的,使用DomSanatizer设置样式也是必需的。
但是再次给我带来厄运,xlink:href不能在CSS中设置)),但是我会离开这个帖子,也许它会对某人有帮助。
UPD:对于我的特殊情况,我最终创建了新组件,而不是使用
https://stackoverflow.com/questions/40807929
复制相似问题