Обновить таблицу материалов после обновления данных - PullRequest
0 голосов
/ 05 октября 2019

Я создал угловое (с asp.net web api) приложение для вставки и обновления данных, которые перечислены в таблице mat. когда я нажимаю на кнопку редактирования, открывается диалоговое окно, и я могу редактировать нужные значения. но проблема в том, что когда я нажимаю на кнопку сохранения, закрывается всплывающее окно и таблица не обновляется.

вот мой файл ts

save() {
    this.form.value.id = this.id;
    this.service.updateEntry(this.id, this.form.value).subscribe((data) => {
      console.log(data);
      this.dialogRef.close(data);
      this.dialogRef.afterClosed().subscribe(() => { this.service.getAll(); } );
    });    
  }

и вот мой сервис

getAll(){
    return this.http.get(this.baseUrl);
  }

updateEntry(id, entry){
    return this.http.put(this.baseUrl+'/'+id, entry)
  }

при инициализации

ngOnInit() {
    this.service.getAll().subscribe((data) => {
      console.log(data);
      this.dataSource = new MatTableDataSource<EntryElement>(data as EntryElement[])
    })
  }

и для обновления записи

updateEntry(entry) {
    console.log(entry);
    this.dialog.open(UpdateEntryComponent, {
      data: {
        Id: entry.Id,
        Description: entry.Description,
        IsExpense: entry.IsExpense,
        Value: entry.Value
      }
    })
  }

Ответы [ 3 ]

0 голосов
/ 05 октября 2019

Пожалуйста, проверьте, используете ли вы dataSource , обновляется ли оно.

Если не обновлено this.dataSource = new MatTableDataSource ( res );

Где res - результат getAll

0 голосов
/ 12 октября 2019

Лучше всего так использовать afterClosed () observable

updateEntry(entry) {
    console.log(entry);
    this.dialog.open(UpdateEntryComponent, {
      data: {
        Id: entry.Id,
        Description: entry.Description,
        IsExpense: entry.IsExpense,
        Value: entry.Value
      }
    }).afterClosed().subscribe(result => {
      this.service.getAll().subscribe((data) => {
        this.dataSource = new MatTableDataSource<EntryElement>(data as EntryElement[])
      })
    });
  }
0 голосов
/ 05 октября 2019

Существует общая проблема с таблицей матов, если источник данных обновляется, но не таблица

const temp =  JSON.stringify(data);
data = JSON.parse(temp)

Вы пробовали это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...