【问题标题】:How to ngSwitchCase in ngFor?如何在 ngFor 中使用 ngSwitchCase?
【发布时间】:2018-01-11 12:41:11
【问题描述】:

来自我的代码中的示例。

tabs: object = [
  { key: 'tab1', value: 'tab1' },
  { key: 'tab2', value: 'tab2' },
  { key: 'tab3', value: 'tab3' },
];
<div [ngSwitch]="my_tab">
  <div *ngFor="let tab of tabs" *ngSwitchCase="'{{ tab.key }}'">
    {{ tab.value }}
  </div>
</div>

我总是收到此代码错误。如何做到这一点?

【问题讨论】:

  • 怎么做什么? 预期的输出是什么?你不能在同一个元素上放置两个结构指令——也许你想要一个 ng-container 某处但不清楚你想要实现什么。另请注意,实际上包含错误很有帮助。

标签: angular ionic-framework ionic3 angularjs-ng-switch


【解决方案1】:

您不能将两个结构指令放在同一个 HTML 标记上。如果您希望将您的开关条件应用于每个 ngFor 循环,您应该编写如下 HTML 代码:

<div [ngSwitch]="my_tab">
  <ng-container *ngFor="let tab of tabs">
    <div *ngSwitchCase="tab.key">
      {{ tab.value }}
    </div>
  </ng-container>
</div>

ng-container 还允许添加结构条件而不影响页面的 CSS 样式。

【讨论】:

  • 以这种方式进行操作,带有 ngFor 的 div 仍然会被渲染。有什么办法可以防止 ngFor div 渲染?
  • @Kiong 也许尝试使用额外的&lt;ng-container&gt; 代替用于循环ngFor&lt;div&gt;? (拒绝别人的答案以试图宣传自己的答案不是很体育精神......)
  • 同意为了宣传我自己的答案而对他人的答案投反对票并不是很有体育精神。但是,我否决了这个答案,因为它并没有真正解决问题(带有 ngFor 的 div 仍然被渲染)。我没有反对宣传我的答案。在我投反对票并发表评论后很长时间才提供了我的答案。
  • @Kiong 7 分钟在我看来并不是“相当长的时间”。昨天17:04发表评论,17:11回复(正好是写的时候)。此外,根据我的声誉日志,在同一时间范围内投反对票。
  • 你是对的。是我的错。对此非常抱歉。如果您可以修改答案并且我可以删除反对票,那就太好了:)
猜你喜欢
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
相关资源
最近更新 更多