【问题标题】:Length of observable array using 'as' syntax使用'as'语法的可观察数组的长度
【发布时间】:2019-05-11 20:18:15
【问题描述】:

"@angular/core": "^6.1.4"

这是我的 .html:

  <div *ngIf="errors$ | async as errors">
    <div class="container alert alert-danger" *ngIf="errors.length > 0">
      <b>{{errors.length}} error(s)</b>
      <ul *ngFor="let error of errors">
        <li>{{error}}</li>
      </ul>
    </div>
  </div>

我的问题是:我可以将其减少到单个 *ngIf 吗?

我尝试了以下方法:

(errors$ | async as errors).length > 0
(errors$ | async as errors) && errors.length > 0

这两个都给出了模板解析错误。

我已经看过How to check the length of an Observable array,这个问题不一样,因为我想使用as语法。

我要做的就是使用as 语法订阅 observable,并且仅在数组长度大于 0 时显示此 div。任何帮助将不胜感激!

【问题讨论】:

    标签: angular


    【解决方案1】:

    这个怎么样

    *ngIf="(errors$ | async)?.length > 1 && (errors$ | async)?.length < 5"
    

    *ngIf="(errors$ | async)?.length > 0 && (errors$ | async) as errors">
    

    更新

    github 上有一个问题。请参阅the link。显然,目前还不支持这种行为。

    【讨论】:

    • 很酷,这可行,但我想避免在同一个对象上使用多个异步管道
    • 我也是这么想的。如果我找到合适的解决方案,我会更新我的帖子:)
    • 谢谢!尽管如此,我还是很感谢您的回答。
    • 您也可以考虑在 rxjs 库中使用 share() 运算符,它可以帮助您消除使用相同可观察服务的多个服务器请求
    • 接受这个答案,因为看起来这是 Angular 官方 GitHub 上的当前功能请求。
    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2012-04-20
    • 2016-01-21
    相关资源
    最近更新 更多