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

Angular中mat-select集成NgxMatSelectSearch时API加载数据不显示问题

问题根因

HTTP请求属于异步操作,ngOnInit执行时会先同步执行this.filteredData.next(this.dataModel.slice()),此时dataModel还是初始化的空数组。接口返回数据赋值给dataModel后,你没有主动通知filteredData更新数据,所以页面初始渲染时拿到的一直是空数组,只有点击select触发变更检测/搜索控件的valueChanges事件后,才会重新走筛选逻辑拿到最新数据。

修复方案

只需修改load方法,接口拿到数据后主动更新筛选数据源即可,修改后代码如下:

load() {
  return this.service.LoadData().subscribe(res => {
    this.dataModel = res;
    // 接口返回数据后更新筛选后的数据源
    this.filteredData.next(this.dataModel.slice());
  });
}

如果需要兼容搜索框已有默认输入值的场景,可以直接调用已经封装好的filterData方法:

load() {
  return this.service.LoadData().subscribe(res => {
    this.dataModel = res;
    // 调用现有筛选方法,适配已输入搜索值的场景
    this.filterData();
  });
}

优化建议

可以把DataloadService中LoadData方法的返回值从Observable<any>改为Observable<DataModel[]>,提前规避类型不匹配的潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:36:03