angular - 根据日期打开垫子扩展面板
问题描述
我有一个从我的 API 服务检索的数组创建的材料扩展表列表。我正在建立这样的列表:
<mat-expansion-panel>
<mat-expansion-panel-header>
<mat-panel-title>
{{roster.date}}
</mat-panel-title>
</mat-expansion-panel-header>
<ul>
<li *ngFor="let y of roster.events">
<div *ngIf="y.isFlight == false"><strong>{{y['startTimeLocal']}}</strong> {{y.Subject}}</div>
<div *ngIf="y.isFlight == true"><strong>{{y['startTimeLocal']}}</strong> {{y.Subject}} <strong>{{y['endTimeLocal']}}</strong></div>
</li>
</ul>
roster
从父组件传入。每个roster
都有三个元素,date, uuid, events
并且events
是当天发生的另一组特定事件。
我想做的是ngInit
打开与当前日期匹配的任何面板。我的问题是如何访问mat-expansion-panel
组件中的然后打开它?
我的想法是根据 uuid 为每个扩展面板添加一个 id 属性,然后循环遍历名册数组以查找匹配日期,然后打开面板。但是,我有点新,我很难理解以这种方式获取和访问元素。
解决方案
无需mat-expansion-panel
从您的组件访问 (可以使用@ViewChild
),您可以简单地使用expanded
.mat-expansion-panel
将您的组件更改为如下所示:
<mat-expansion-panel [expanded]="isPanelOpen(roster.date)">
并在您的组件中添加一个函数,该函数确定是否应在特定日期打开扩展面板:
// Opens every panel for which the date has a "day" of 10
public isPanelOpen(date: Date): boolean {
return date.getDate() === 10;
}
这 是一个堆栈闪电战,它创建了几个
mat-expansion-panel
's,然后在标题中打开包含当前日期的那个。
推荐阅读
- python - 在python中使用表名作为sql参数
- amazon-web-services - Dynamodb 交易限制增加
- go - 使用 Reflect 获取自定义类型的基本类型
- sql-server - 如何使用 BindingSource 插入 SQL Server
- r - 在 R 中用模式查找和替换文本
- python - 将 pandas 数据框中的 datetime64[ns] 作为参数传递给函数
- mysql - 如何用另一个表中的数据(计算)填充 SQL 列
- javascript - 将 async/await 更改为 Promise
- wordpress - 如何自定义/更改循环查询
- jquery - 使用 JavaScript (jQuery) 创建自定义计算