You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular2项目运行报错:Unexpected closing tag ":svg:use" 求助

解决Angular 2中SVG <use>标签的"Unexpected closing tag"错误

嘿,作为刚接触Angular 2的新手,碰到这个问题太正常了!你遇到的Unexpected closing tag ":svg:use"错误,本质是Angular 2的模板编译器对SVG原生标签的解析规则导致的——它把<use>误当成了自定义组件,而非原生SVG元素,所以对标签闭合方式的检查变得异常严格。

问题根源

你的代码里用了成对闭合的<use></use>写法:

<use xlink:href="../../../assets/images/sprite.svg#facebook"></use>

在普通HTML环境下这没问题,但Angular 2的模板解析器对SVG元素的处理有特殊逻辑,它会认为<use>这种非标准HTML标签需要遵循组件的闭合规则,从而抛出错误。

两种解决方案

方案1:使用自闭合标签(推荐)

SVG规范里<use>是允许自闭合的,Angular对自闭合的SVG原生标签解析更友好,直接改成这样:

<use xlink:href="../../../assets/images/sprite.svg#facebook" />

方案2:改用SVG2标准的href属性(适用于Angular 2+新版本)

SVG2已经废弃了xlink:href,改用原生的href属性,写法更简洁,同时也能避免Angular的解析问题:

<use href="../../../assets/images/sprite.svg#facebook" />

修正后的完整代码示例

<ul class="social-links">
  <li>
    <a [href]="facebook" target="_blank">
      <svg width="12" height="26">
        <use href="../../../assets/images/sprite.svg#facebook" />
      </svg>
    </a>
  </li>
  <li>
    <a [href]="twitter" target="_blank">
      <svg width="20" height="17">
        <use href="../../../assets/images/sprite.svg#twitter" />
      </svg>
    </a>
  </li>
</ul>

额外提示

如果之后碰到其他SVG元素的类似错误,都可以尝试用自闭合标签的方式解决,Angular对SVG原生元素的自闭合写法兼容性更好。

内容的提问来源于stack exchange,提问作者Karan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:27:27