Angular 使用SVG<;参数>;角度标记2

Angular 使用SVG<;参数>;角度标记2,angular,svg,Angular,Svg,有一个模板: <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.xl

有一个模板:

<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绊住了…

好吧,解决了,实际上它由两部分组成:

1) -角度误差2。 设置自定义\u元素\u架构没有帮助,至少仍然出现错误,但将其替换为无\u错误\u架构允许其通过

@NgModule({
  imports: [/***/],
  declarations: [/***/],
  exports: [/***/],
  schemas: [NO_ERRORS_SCHEMA]
})
2) 不幸的是,它不能在SVG中使用,至少在我的想法中是这样。我被这句话蒙蔽了。所以SVG在我的版本中不起作用,但我能够使用WorkAround,使用CSS变量:

<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: 对于我的特殊情况,我最终创建了新组件,而不是使用