【问题标题】:Svg not always displayedSVG 并不总是显示
【发布时间】:2018-04-19 00:13:03
【问题描述】:

在整个我的应用程序中,我总是无法正确显示我的 svg,有时它会显示所有图标,有时什么也不显示,有时会显示 50% 的图标。不明白为什么。

这是一个示例,当我进入我的页面时,通常会显示图标(但并非总是如此):

然后,当我通过我的应用程序(延迟加载)导航到另一个菜单并返回时,结果如下:

另一个 GIF 正在运行:这里我只是在我的应用程序内切换标签(延迟加载)(仅供参考,这个 GIF 被裁剪了,你看不到我点击的标签,它在这张图片之外)你可以看到它有时会显示图标,有时不会,不知道从精神链接 svg 是如何工作的,但是我的 symbols.svg 中有一个名为“#mark_all_as_read”的图标永远不会消失,但是它们都有相同的语法:

我在 index.html 中的 index.html 中添加了一个图标 X,就在标记之前,它总是显示,但是当我移动到具有相同 X 图标的某个模块(延迟加载)时,有时会显示它不是 !

这种行为对于我在精神上使用 svg 的所有图标都是相同的,如下所示: <svg class="slds-icon slds-icon-text-default slds-icon_x-small slds-m-right_x-small"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../assets/icons/utility-sprite/svg/symbols.svg#list"></use> </svg>

我链接的文件是:symbols.zip

不知道是ng s开发模式下的angular还是angular-cli,还是浏览器问题 在这里我有 plunker https://embed.plnkr.co/dQJIX2lMw8WOl9rQepGX/ 但它每次都有效(请切换 HOME 和 ABOUT 菜单)

更多信息: 这是 dom 工作时:

当 chrome 没有显示它时:

我在列表中的菜单代码:https://gist.github.com/istiti/9981daf8bc07f121401733bc6272e4a1

这是不总是显示图标的代码 <li routerLinkActive="slds-is-active" [routerLinkActiveOptions]="{exact: true}" *ngIf="'ACCOUNTING_WRITINGS' | permissions" class="slds-nav-vertical__item"> <a [routerLink]="['ecriturecomptable']" class=" slds-nav-vertical__action slds-text-link--reset" aria-describedby="entity-header"> <span class="slds-icon_container slds-icon-utility-open_folder slds-line-height_reset"> <svg class="slds-icon slds-icon-text-default slds-icon_x-small slds-m-right_x-small"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../assets/icons/utility-sprite/svg/symbols.svg#list"></use> </svg> </span> <ng-container i18n>Liste écritures comptable</ng-container> </a> </li>

an 这个图标似乎总是显示的只是另一个 ngIf :*ngIf="('ACCOUNTING_WRITINGS' | permissions:'WRITE') &amp;&amp; ecrituresAVerifier?.length"

另一个重要信息: 这很奇怪,当我导航到一条路线时,我的浏览器对相同的 symbols.svg 文件进行了两次 http 调用 当我在其中一个中删除&amp;&amp; ecrituresAVerifier?.length

  • 浏览器只正确拨打了一个电话,我所有的图标似乎一直都在显示!注意:它适用于 ngIf 中的第二个条件的 firefox 事件

    继续:真的很想知道为什么在第二个条件中

  • &amp;&amp; ecrituresAVerifier?.length 在我的 ng 中如果浏览器拨打另一个电话 如果我删除它,它只拨打一个电话!

    受此错误影响的浏览器?

    实际在 chrome 最新版本上测试 它似乎一直在 FIREFOX 上运行!

    浏览器: - [最后] Chrome(桌面)

    角度版本和合作: @角/cli:1.4.2 节点:6.11.0 操作系统:win32 x64 @角/* 4.4.3 打字稿:2.3.4

  • 【问题讨论】:

    • 我有同样的问题,并尝试将它们放入 app component.ts 但没有成功 - 任何解决方案?

    标签: angular svg


    【解决方案1】:

    我也遇到了这个问题,并尝试了许多不同的方法来解决这个问题,但真正有帮助的是在 app.component.ts 中定义所有 svg 图标并在应用程序的任何地方使用它们。我之前在相应组件的 TS 文件中定义了图标。 后来当我将它们移到 app.component.ts 时,所有图标都可以正常工作。让我知道这是否有帮助。

    还在构造函数中使用 IconRegistry 定义图标并像这样使用它(如果您使用的是角度材料)&lt;mat-icon svgIcon="icon.svg"&gt;&lt;/mat-icon&gt;&lt;i class="material-icons"&gt;icon.svg&lt;/i&gt;

    【讨论】:

    • 请将所有基本信息放入您的答案中,而不是在评论中。
    • 我注意到如果 svg 没有定义它不会显示的高度和宽度,请检查显示属性以及它是否定位正确且颜色不透明;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    相关资源
    最近更新 更多