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

Angular 16中如何获取模型数组属性的单个指定值?

解决TypeScript类实例数组中嵌套数组的单个元素访问问题

问题描述

定义了如下TypeScript类:

export class DayOffer {
  private id: number;
  private day: string;
  private offers: string[];

  constructor(id: number, day: string, offers:string[]) {
    this.id = id;
    this.day = day;
    this.offers = offers;
  }
}

同时创建了该类的实例数组:

offers: DayOffer[] = [
  new DayOffer(1, "Maandag", ["Stoofvlees"]),
  new DayOffer(2, "Dinsdag", ["Hamburgers","Gehakt"]),
  new DayOffer(4, "Donderdag", ["Stoofvlees","Gehakt"]),
  new DayOffer(5, "Vrijdag", ["Hamburgers","Kotelettengebraad"]),
  new DayOffer(6, "Zaterdag", ["Schnitzels","Kotelettengebraad"]),
];

在模板中可以通过{{offer["offers"]}}调用整个offers数组,但尝试{{offer["offers[1]"]}}获取单个指定值时无效。

解决方案

1. 修正属性访问语法

offer["offers[1]"]的写法错误,它会把字符串"offers[1]"当作属性名去查找,而非先获取offers数组再访问索引为1的元素。正确写法有两种:

  • 点语法+数组索引:{{offer.offers[1]}}
  • 方括号语法嵌套:{{offer["offers"][1]}}

2. 解决私有属性的访问限制

由于DayOffer类中的offers是私有(private)属性,在模板(如Angular模板)中无法直接访问私有成员,需做以下调整之一:

方案A:将属性改为公共(public)

直接在构造函数中声明公共属性,简化代码:

export class DayOffer {
  constructor(
    public id: number,
    public day: string,
    public offers:string[]
  ) {}
}

方案B:添加getter方法

保留私有属性,通过getter暴露访问接口:

export class DayOffer {
  private id: number;
  private day: string;
  private _offers: string[];

  constructor(id: number, day: string, offers:string[]) {
    this.id = id;
    this.day = day;
    this._offers = offers;
  }

  get offers(): string[] {
    return this._offers;
  }
}

完成上述调整后,即可在模板中通过{{offer.offers[1]}}正常访问嵌套数组的单个元素。

内容的提问来源于stack exchange,提问作者Mathias Van Langendonck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:23