You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用API获取表格数据后展示数据条数的问题与解决方案

解决方法:正确展示API返回数据的条数

先帮你揪出当前代码的问题:你在子组件HTML里用*ngFor='let data of datas'循环每一条数据,然后重复渲染datas.length——这会导致每有一条数据就显示一次条数,比如你有2条数据,就会输出两次2,完全不是你想要的单条总数效果。

修正后的子组件代码

Children component.html

直接去掉循环,判断数据存在后显示长度即可:

<mat-icon *ngIf="data">{{data.length}}</mat-icon>

进阶优化(Angular最佳实践)

手动订阅Observable容易遗漏取消订阅,建议用async管道自动管理订阅,这样组件代码可以更简洁:

import { Component, Input } from '@angular/core';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-counter',
  templateUrl: './counter.component.html'
})
export class CounterComponent {
  @Input() counterDatasObservable: Observable<any[]>;
}

对应的HTML改成:

<mat-icon *ngIf="counterDatasObservable | async as data">{{data.length}}</mat-icon>

这样连组件里的data变量和ngOnInit的订阅逻辑都可以删掉,既安全又省心。

父组件调用确认

你的父组件代码是没问题的:

<app-counter [counterDatasObservable]="dataMlsService.getProducts('EnCours', 'Location')"></app-counter>

只要dataMlsService.getProducts返回的是Observable<any[]>类型,就能正确获取到数组的length属性,显示你要的数据条数。

当API返回你console里的2条数据时,修正后的代码就会在mat-icon里准确显示2啦。

内容的提问来源于stack exchange,提问作者HCP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:22:56