如何在 Angular/Typescript 中使用 Signal 返回嵌套对象数组?

问题描述 投票:0回答:1

在我的 Angular/Typescript 代码中,我有一个嵌套对象数组,我试图根据对象属性是否具有值 === 'event' 来返回(过滤)。

我不知道我错过了什么,但由于某种原因它不会返回嵌套对象数组,而是不断告诉我我的变量是 CalendarModel[] 类型,它是父级?

我将

:{types}
添加到变量/过滤器中,以向您展示 Angular 告诉我变量类型是什么

 getAllEvents: Signal<CalendarModel[]> = computed(() => this.dataService.allInformation()?.allCalendarInformation?.filter(calendar: CalendarModel => calendar?.events?.filter(event: CalendarEvent=> event.type === 'event').filter(event: CalendarEvent => {
      return new Date(event.date).getTime() >= new Date().setHours(0, 0, 0, 0);
    }))
  );

这是我的模型结构:

  allCalendarInformation: CalendarModel[];


export interface CalendarModel {
  date: Date;
  events: CalendarEvent[];
}
export interface CalendarEvent {
  imageUrl?: string
  title: string;
  date?: Date;
  location?: string;
  time?: string;
  description: string;
  type?: string;
  featured?: boolean;
}

我错过了什么吗?

我正在深入研究事件并尝试获取所有具有

type === 'event'
的事件,但 Typescript 一直告诉我我的整体对象
getAllEvents
属于
CalendarModel[]
类型?不是应该
CalendarEvent[]
吗?

请帮助我理解我做错了什么。

我的项目中有多个其他过滤对象,它们可以工作,但我在这里做错了。

javascript angular typescript angular-signals
1个回答
0
投票

这是因为过滤器方法是在 CalendarModel 之上操作的,CalendarModel 是一个数组。您必须应用一些减速器或映射并使该数组具有单一维度。

然后,一旦有了这个单个数组,您就可以通过类型属性过滤对象。

© www.soinside.com 2019 - 2024. All rights reserved.