【问题标题】:mat-card-avatar not rendering properly on initial Page Loadmat-card-avatar 在初始页面加载时未正确呈现
【发布时间】:2019-11-14 19:41:56
【问题描述】:

我有一个简单的 mat-card-avatar 布局,它在我的应用程序的许多页面的标题中显示一个圆形图标。我发现在许多页面上(但不是全部,即使使用相同类型的代码)在初始渲染过程中没有正确渲染 mat-card-avatar

我正在使用此代码:

<h1 fxLayout="row">
      <div mat-card-avatar class="header-icon">
        <mat-icon>home</mat-icon>
      </div>
      Welcome {{ user.userName }}
</h1>

在第一次渲染时(即完全刷新浏览器),预期的圆形图标会显示为方形:

如果我随后导航到具有相同布局样式的另一个视图 mat-card-avatar 正确呈现,就像然后导航回原始视图一样:

真正奇怪的是,我在很多页面上都使用了相同的基本布局,并且在某些页面上这会失败,而在其他页面上却可以。大多数其他的工作往往更复杂。

我怀疑这是时间问题,但我查看了代码并尝试移动包含,但这些都没有任何效果。同样可能与这种情况相反的是,图标显示的原色也来自样式 - 因此肯定会应用一些材质样式。

查看调试器中呈现的 HTML,我发现呈现的 HTML 没有任何区别 - 相同的 HTML 标记、类和样式无论以何种方式呈现,这确实很奇怪。

有没有人遇到过这个问题或对可能导致此问题的原因和任何解决方法有任何建议?

【问题讨论】:

  • 您是否通过 chrome 工具检查了每种情况下的 CSS?它必须是在呈现为正方形时应用的额外样式。
  • 是的 - 完全一样。我猜这是因为样式可能还没有进来,因为它们是从外部加载的。

标签: angular angular-material material-design


【解决方案1】:

看起来问题是实际组件中缺少&lt;mat-card&gt; 元素。这就是为什么有些页面没有显示该行为而其他页面显示的原因。

如果我将上面的代码包装到 &lt;mat-card&gt; 块中,它就可以工作。但是页面上只有一个空的&lt;mat-card&gt; 甚至可以实现这一点。

这很难看,但它有效:

<mat-card style="display: none"></mat-card>
<h1 fxLayout="row">
  <div mat-card-avatar class="header-icon">
    <mat-icon>home</mat-icon>
  </div>
  Welcome {{ user.userName }}
</h1>

你也可以添加这个:

<mat-card style="display: none"></mat-card>

到一个根组件,这将解决树中下面所有组件的这个问题。

所有这些都是丑陋的,并且可能是非设计行为,因此最好不要在 mat-card 之外使用 mat-card-avatar,但在紧要关头这会起作用。

【讨论】:

  • 不要忘记将其标记为 anwer ;)(它会增加您的声誉 :))
  • 我知道 - 总是犹豫要不要标记我自己的答案,但直到其他人有机会用也许更好的答案做出回应......
  • 它至少帮助了我,thanx Rick!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多