У меня есть таблица данных углового материала, которую я создал с помощью ng generate @ angular / material: material-table --name = BHTable.
Я пытаюсь проверить, как динамически изменять содержимое таблицыво время выполнения. Чтобы сделать это, я хочу создать кнопку, которая очищает таблицу, установив пустой массив источника данных.
В моем datasource.ts у меня есть функция, которую я добавил для изменения источника данных таблицы.
public UpdateData(IncomingData: BhTableItem[]){
this.data = IncomingData;
}
Когда я нажимаю кнопку, которую я сделал, она вызывает функцию в моем обычном режиме (неисточник данных) components.ts, который имеет этот код.
public UpdateTest(){
this.dataSource.UpdateData([]);
}
Это должно обновить источник данных в таблице и изменить содержимое таблицы. Тем не менее, когда я нажимаю кнопку, ничего не происходит .... Я прочитал много разных постов, пытаясь выяснить это, но я не получил его на работу. Я думаю, что ответ как-то связан с тем, что мой метод не запускает наблюдаемое для обновления таблицы, но я не уверен. Любая помощь будет принята с благодарностью!
Редактировать: Я забыл упомянуть. Когда я помещаю свою строку в ngOnInit, похоже, что она работает, чтобы изменить содержимое таблицы при загрузке страницы. Мне нужна та же функциональность, но чтобы это происходило, когда я нажимал кнопку.
ngOnInit() {
this.dataSource = new BhTableDataSource();
this.dataSource.UpdateData([]);
}
HTML с момента запроса.
<div class="mat-elevation-z8">
<table mat-table class="full-width-table" matSort aria-label="Elements">
<!-- Id Column -->
<ng-container matColumnDef="id">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Id</th>
<td mat-cell *matCellDef="let row">{{row.id}}</td>
</ng-container>
<!-- Name Column -->
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>
<td mat-cell *matCellDef="let row">{{row.name}}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
<mat-paginator #paginator
[length]="dataSource?.data.length"
[pageIndex]="0"
[pageSize]="50"
[pageSizeOptions]="[25, 50, 100, 250]">
</mat-paginator>
</div>
<button (click)="UpdateTest()"> Clear Table </button>