Как изменить данные в таблице данных материала с помощью кнопки (угловой) - PullRequest
0 голосов
/ 24 октября 2019

У меня есть таблица данных углового материала, которую я создал с помощью 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>
...