【问题标题】:Problem with displaying array length correctly正确显示数组长度的问题
【发布时间】:2021-12-03 17:50:44
【问题描述】:

在 Angular 项目中,我想循环访问 filterLifePolicies 数组,因为我想通过 URI 传递 LobDsc 属性。

问题是我还想将数组的长度作为数字输出,但是因为如果数组包含例如,我会遍历每个元素。 3 个对象,3 张卡片显示...我只想要一张编号为 3 的卡片(数组长度)。

HTML:

<div class="card" *ngFor="let policy of filterLifePolicies">
    <a [routerLink]= "['/contracts', policy.LobDsc]"
      routerLinkActive="active" class="noLinksDecoration">
    <div class="card-body text-center">
      <img src="../../assets/images/Component62_1.svg"> 
      <p class="policyTitle">Ζωή & Υγεία</p>
      <p class="counter">{{countLife}}</p>
    </div>
    </a>
  </div>

打字稿的一部分:

getCustomerPolicies () {

    this.http.get<any>('http://localhost:8080/o/mye/pol').subscribe({
    next: res => {  

    this.filterLifePolicies = res.Life.Policies;
    console.debug(this.filterLifePolicies);
    this.countLife = this.filterLifePolicies.length;

【问题讨论】:

  • 这是 Angular 11
  • thisthis 有帮助吗?
  • 嗯..我不这么认为..问题是如何将我需要的 *ngFor 与正确的数组长度输出结合起来
  • @AndreasV 请帮助我更好地理解您的问题。因此,假设filterLifePolicies 的长度为3,因此countLife 的值为3。现在,由于您正在使用ngFor 指令进行迭代,您将看到三张卡片。但是由于countLife 的值是静态的,所以你看到三张牌,但在所有牌中,countLife 的值是相同的,都是 3,这不是你想要的吗?我说的对吗?
  • 是的,你是 90% 正确的。您唯一缺少的是我不想看到 3 张卡的 countLife 值为 3 但一张卡的值为 3!

标签: html arrays angular


【解决方案1】:

您可以执行以下操作,考虑为 countLife 变量分配了所需的值。

<div class="card">
  <ng-container *ngFor="let policy of filterLifePolicies; index as i">
    <a *ngIf="i < 1" [routerLink]="['/contracts', policy.LobDsc]" routerLinkActive="active" class="noLinksDecoration">
      <div class="card-body text-center">
        <img src="../../assets/images/Component62_1.svg">
        <p class="policyTitle">Ζωή & Υγεία</p>
      </div>
    </a>
  </ng-container>
  <p class="counter">{{countLife}}</p>
</div>

在上面的代码 sn-p 中,ng-container 用于迭代 filterLifePolicies 以访问 LobDsc 值。由于迭代不应创建具有 CSS 类 card-body 的重复 HTML div 元素,因此正在使用通过 ngIf 的附加检查来检查 index 值,使其始终小于 1。

虽然如果LobDsc 的值对于filterLifePolicies 的所有值都相同,推荐的方法是通过点表示法获取其值并将其存储在一个变量中,该变量以后可以直接绑定到您的模板在运行时。

【讨论】:

  • 感谢您的回复!虽然countLife只出现了一次,但卡片的其他内容,即图片和标题又出现了3次
  • 哦,好吧。那么card-body是否需要包裹在锚标签中?
  • 是的……就是这样
  • 好的,但是如果LobDsc 对象中有多个LobDsc 属性怎么办? LobDsc 的各个值是否应该在每次迭代时连接到 routerLink 属性?
  • LobDsc 对于所有 LifePolicies 总是相同的......所以这不是问题。我基于此找到的解决方法如下:&lt;div class="card" *ngFor="let policy of filterLifePolicies | slice:0:1;"&gt; 所以,迭代时只返回一个项目......同时我有我需要传递 url 的 LobDsc......但我想知道它是否是太客气了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多