Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度块svg xmlns作为$sce:unsecURL_Javascript_Angularjs_Svg_Angularjs Material - Fatal编程技术网

Javascript 角度块svg xmlns作为$sce:unsecURL

Javascript 角度块svg xmlns作为$sce:unsecURL,javascript,angularjs,svg,angularjs-material,Javascript,Angularjs,Svg,Angularjs Material,我正在用Angular Material构建一个应用程序,其md图标结构如下: <md-icon class="ic1" md-svg-src='data:image/svg+xml, <svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 32 32"> <ellipse ry="16" rx="16" id="svg_1" cy="16" cx="16" stroke-width="1.5" fill="

我正在用Angular Material构建一个应用程序,其md图标结构如下:

<md-icon class="ic1" md-svg-src='data:image/svg+xml,
  <svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 32 32">
    <ellipse ry="16" rx="16" id="svg_1" cy="16" cx="16" stroke-width="1.5" fill="#ff0000"/>                                    
  </svg>' class="s32">
</md-icon>
但没有效果

我怎样才能让它工作


请注意,我简化了HTML以仅显示相关内容,事实上,我会根据变量动态更改填充颜色,因此,如果可以使此动态版本正常工作,我宁愿不将每个SVG保存为文件。

我将假设您是在运行时生成SVG字符串,而不是像上面那样硬编码它?否则您将无法更改填充颜色

比如说:

 md-svg-src='{{generateIcon()}} ...
对吗

如果是这样,那么您是否尝试过对SVG进行Base64编码

generateIcon() {
  svgStr = "whatever";
  return "data:image/svg+xml;base64," + base64(svgStr);
}

也许有更好的方法来解决这个问题。但这可能是一个可行的解决方法。

注意:尽管该字符串看起来像URL,但它不是真正的URL。它只是
xmlns
的一个常量值,表示“这是一个SVG”。将其更改为https会从技术上破坏它。@PaulLeBeau谢谢,很高兴知道。请注意,它也不能与http一起工作,并且会将其当作URL来阻止,因为某些原因不完全是这样,SVG本身与它在答案中的外观一样,唯一的区别是“fill”属性类似于fill=“{{(var1=='red')?”#ff0000':“#0000ff'}”,而不是纯颜色。在将CodePen插入我的主应用程序之前,我在CodePen上开发了这个页面,它工作得很好,所以SVG本身不会有问题。我必须创建一个函数来实现这一点,但将内容转换为base64(如您所说)解决了这个问题。非常感谢。
generateIcon() {
  svgStr = "whatever";
  return "data:image/svg+xml;base64," + base64(svgStr);
}