【问题标题】:How to best dynamically show/hide string segments in Angular?如何最好地在 Angular 中动态显示/隐藏字符串段?
【发布时间】:2019-09-07 00:48:33
【问题描述】:

我正在构建一个模板,其中可能有也可能没有一些值;例如,我需要基于来自 JSON 响应的多个字段构建一个 URL 字符串。

<a class="url">{{ ad.domain }}/{{ ad.path1 }}/{{ ad.path2 }}...</a>

但是如果字符串的某些部分为空,我正在考虑如何处理这种情况;比如没有 path2 的值。

我可以在锚标记中使用 ng-container*ngIf 指令,但它最终看起来非常混乱和臃肿:

<a class="url">{{ ad.domain }}<ng-container *ngIf="ad.path1 !== ''">/{{ ad.path1 }}</ng-container><ng-container *ngIf="ad.path2 !== ''">/{{ ad.path2 }}</ng-container>...</a>

它确实完成了工作,但我想知道是否还有其他一些 Angular 方式可以有效地完成这项工作。

【问题讨论】:

  • 通常,当事情“臃肿”时,是时候创建一个新组件了。我最近不得不做一些类似的事情,我最终创建了一个带有输入数组元素的自定义组件,然后我所要做的就是使用 ngFor 指令循环,它非常干净 IMO。
  • 嗯,它是一个单独的组件,我只显示广告的信息,问题是广告通常有多个部分,URL 有时有不同的部分,所以我只是试图控制何时显示其中一些片段
  • 请查看我最初的评论,我已更新。
  • 听起来确实更干净,但同时我不确定为这个 URL 创建一个组件是否太多/:我明白你的意思,我会考虑一下

标签: html angular angular-ng-if


【解决方案1】:

像这样使用三元运算符

<a class="url">{{ ad.domain+(ad.path1?'/'+ad.path1:'')+(ad.path2?'/'+ad.path2:'') }}</a>

【讨论】:

  • 哦,看起来确实好一点,我实际上虽然使用三元运算符,但我总是坚持使用多个插值段 ({{}}) 而不是一个,我会试试这个
猜你喜欢
  • 2016-07-17
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多