gpt4 book ai didi

angular - 使用 HTTP GET 请求在 Angular Material 表中获取数据

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

我有一个 Angular Material 表,我想在其中从服务中获取数据。这是我的服务。

import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Message } from '../messages/message-table/message.model';

@Injectable()

export class MessageService {
constructor(private http: HttpClient) {}

getMessageTableData() {
return this.http.get<Message[]>('<removed>');
}
}

这是数据的接口(interface)消息
export interface Message {
RequestID: string;
RequestStatus: string;
RequestorName: string;
SubmissionDate: string;
ApproverName: string;
ApprovalDate: string;
Subject: string;
MessageStatus: string;
ReadStatus: string;
}

在我的 component.ts 文件中,我可以使用它在控制台中显示数据,
ngOnInit() {

this.messageService.getMessageTableData().subscribe(
(response) => console.log(response)
)
}

我已经在 Angular Material 的网站上看到了示例代码,但是由于我的表上有很多客户端过滤,我想将 MatTableDataSource 用于我的数据源。该示例使用自定义数据源,我无法在其中包含我的过滤器。如何在我的表格中显示这些来自我的服务的 JSON 形式的数据?

附上我的表格的 HTML 代码
<table mat-table [dataSource]="dataSource" matSort class="mat-elevation-z8">
<ng-container matColumnDef="RequestID">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Request ID </th>
<td mat-cell *matCellDef="let element"> {{element.RequestID}} </td>
</ng-container>

<ng-container matColumnDef="RequestStatus">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Request Status </th>
<td mat-cell *matCellDef="let element"> {{element.RequestStatus}} </td>
</ng-container>

<ng-container matColumnDef="RequestorName">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Requestor Name </th>
<td mat-cell *matCellDef="let element"> {{element.RequestorName}} </td>
</ng-container>

<ng-container matColumnDef="SubmissionDate">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Submission Date </th>
<td mat-cell *matCellDef="let element"> {{element.SubmissionDate}} </td>
</ng-container>

<ng-container matColumnDef="ApproverName">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Approver Name </th>
<td mat-cell *matCellDef="let element"> {{element.ApproverName}} </td>
</ng-container>

<ng-container matColumnDef="ApprovalDate">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Approval Date </th>
<td mat-cell *matCellDef="let element"> {{element.ApprovalDate}} </td>
</ng-container>

<ng-container matColumnDef="Subject">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Subject </th>
<td mat-cell *matCellDef="let element"> {{element.Subject}} </td>
</ng-container>

<ng-container matColumnDef="MessageStatus">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Message Status </th>
<td mat-cell *matCellDef="let element"> {{element.MessageStatus}} </td>
</ng-container>

<ng-container matColumnDef="ReadStatus">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Read Status </th>
<td mat-cell *matCellDef="let element"> {{element.ReadStatus}} </td>
</ng-container>
</table>

最佳答案

您需要创建 MatTableDataSource 的实例并将您从服务中获得的数据传递给它。像这样的东西:

import { MatSort, MatTableDataSource } from '@angular/material';
...

@Component({...})
export class TableComponent implements OnInit {
...
dataSource;

@ViewChild(MatSort) sort: MatSort;

ngOnInit() {
this.messageService.getMessageTableData()
.subscribe(response => {
this.dataSource = new MatTableDataSource(response);
this.dataSource.sort = this.sort;
});
}

...

}

Here's a Working Sample StackBlitz for your ref.

关于angular - 使用 HTTP GET 请求在 Angular Material 表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53740101/

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