gpt4 book ai didi

Angular:Mat Sort不适用于表格扩展

转载 作者:行者123 更新时间:2023-12-05 07:05:01 25 4
gpt4 key购买 nike

我正在尝试对表格进行排序,但它没有排序。我发现没有发生的问题。这没有发生,因为 mat-sort-header与模型不匹配。但问题是我的 JSON 对象与这个 example 不一样。 .同样对于名称部分,我的数据来自 firstName , middleName , lastName我必须将其显示为仅名称。让我在下面显示我的 JSON 对象和我的 HTML:

从 API 接收到的 JSON 对象

[
{
"exam": {
"examCategory": {
"examCategoryName": "Freshers",
"id": 157,
"timestamp": "2020-07-07 11:55:22.425"
},
"examName": "First Demo",
"timestamp": "2020-07-07 15:17:32.0"
},
"id": 94,
"user": {
"id": 9,
"firstName": "AVISHEK",
"middleName": "DATTA",
"lastName": "RAY",
"timestamp": "2020-07-07 15:06:58.186"
},
"timestamp": "2020-07-07 13:15:24.898"
}
]

example.component.html

isplayMode="flat" class="mat-table" [class.d-none]="isLoading || length==0">
<section matSort class="mat-elevation-z2 mat-header-row">
<span class="mat-header-cell" mat-sort-header="user.id">User Id</span>
<span class="mat-header-cell" mat-sort-header="name">Name</span>
<span class="mat-header-cell" mat-sort-header="examName">Exam Name</span>
<span class="mat-header-cell" mat-sort-header="examCategoryName">Exam Category</span>
<span class="mat-header-cell" mat-sort-header="marks">Marks Obtained</span>
</section>
<mat-expansion-panel *ngFor="let result of selectedResult | async">
<mat-expansion-panel-header class="mat-row">
<span class="mat-cell">{{ result.user.id }}</span>
<span class="mat-cell">
{{ result.user.firstName | titlecase }}
{{ result.user.middleName | titlecase }}
{{ result.user.lastName | titlecase }}
</span>
<span class="mat-cell">{{ result.exam.examName }}</span>
<span class="mat-cell">{{ result.exam.examCategory.examCategoryName }}</span>
</mat-expansion-panel-header>
<div class="row">
// Any Body //
</div>
</mat-expansion-panel>
</mat-accordion>

在 TS 中我已经声明了 selectedResult 作为selectedResult : Observable<any[]>我给了mat-sort-header我自己的名字。我需要做哪些更改才能进行排序?

最佳答案

我不确定..但你可以这样试试...

当您从 API 收到 JSON 对象时

example.component.ts

undortedData: any;
mainData: any;
this.mainData = [
{
"exam": {
"examCategory": {
"examCategoryName": "Freshers",
"id": 157,
"timestamp": "2020-07-07 11:55:22.425"
},
"examName": "First Demo",
"timestamp": "2020-07-07 15:17:32.0"
},
"id": 94,
"user": {
"id": 9,
"firstName": "AVISHEK",
"middleName": "DATTA",
"lastName": "RAY",
"timestamp": "2020-07-07 15:06:58.186"
},
"timestamp": "2020-07-07 13:15:24.898"
}
];

this.undortedData = [...this.mainData];

sortData(sort: Sort) {
const data = this.unsortedData.slice();
if (!sort.active || sort.direction === '') {
this.mainData = data;
return;
}

this.mainData = data.sort((a, b) => {
const isAsc = sort.direction === 'asc';
switch (sort.active) {
case 'name': return this.compare(a.name, b.name, isAsc);
default: return 0;
}
})

}

compare(a: number | string, b: number | string, isAsc: boolean) {
return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
}

在您的example.component.html

</mat-accordion> isplayMode="flat" class="mat-table" [class.d-none]="isLoading || length==0">
<section matSort (matSortChange)="sortData($event)" class="mat-elevation-z2 mat-header-row">
<span class="mat-header-cell" mat-sort-header="user.id">User Id</span>
<span class="mat-header-cell" mat-sort-header="name">Name</span>
<span class="mat-header-cell" mat-sort-header="examName">Exam Name</span>
<span class="mat-header-cell" mat-sort-header="examCategoryName">Exam Category</span>
<span class="mat-header-cell" mat-sort-header="marks">Marks Obtained</span>
</section>
<mat-expansion-panel *ngFor="let result of selectedResult | async">
<mat-expansion-panel-header class="mat-row">
<span class="mat-cell">{{ result.user.id }}</span>
<span class="mat-cell">
{{ result.user.firstName | titlecase }}
{{ result.user.middleName | titlecase }}
{{ result.user.lastName | titlecase }}
</span>
<span class="mat-cell">{{ result.exam.examName }}</span>
<span class="mat-cell">{{ result.exam.examCategory.examCategoryName }}</span>
</mat-expansion-panel-header>
<div class="row">
// Any Body //
</div>
</mat-expansion-panel>
</mat-accordion>

关于Angular:Mat Sort不适用于表格扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62832152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com