小编fri*_*rik的帖子

SVG在Angular应用程序中使用数据更新闪烁

我正在使用Angular 4中的应用程序.在一个视图中,我使用了从API请求中检索的数据之间的一些svgs.它看起来像这样:

<div>
  <div>
     <svg><use xlink:href="./assets/svg/machine.svg#message-icon"></use></svg>
  </div>
  <div>{{machine.state}}</div>
  <div>
     <svg><use xlink:href="./assets/svg/machine.svg#settings-icon"></use></svg>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

所有svgs都放在一个文件(machine.svg)中,并在带有id的<symbol>标签中定义.

现在我的问题是当我每隔2秒设置一次间隔来更新API请求中的数据时,我的svg图标似乎随每次更新而闪烁,但它只发生在Chrome中.

我检查了网络日志,似乎每个API请求都下载了整个svg文件:

在此输入图像描述

在Mozilla中一切正常,svg只下载一次:

在此输入图像描述

我试图将svg放在<object>标签中,但请求数量更多.将每个svg放在<img>标签中似乎解决了请求的问题,但我更愿意控制"填充"属性.将整个svg直接放在页面上也解决了问题,但它似乎不是一个干净的解决方案.

我的问题是,如果有一种方法可以从文件中检索svg,而Chrome没有经常下载吗?

javascript svg google-chrome angular

13
推荐指数
1
解决办法
662
查看次数

标签 统计

angular ×1

google-chrome ×1

javascript ×1

svg ×1