Как обновить ng2-smart-table из пользовательского компонента рендеринга

#angular #ng2-smart-table

#angular #ng2-smart-table

Вопрос:

Я создал пользовательский компонент рендеринга для добавления кнопок в мой ng2-smart-table. Кнопки отображаются правильно, и я могу выполнить действие. Теперь я хочу обновить таблицу после завершения действия.

Как я могу этого добиться? Я добавил подписчика в настройках и отправляю событие из своего компонента, но из настроек, как я могу вызвать другую функцию для выполнения обновления исходного кода?

Ниже приведен код: Настройки:

 TableSettings = {
columns: {              
  documentId: {
    title: 'Document ID'
  },
 button: {
    title: 'Task Actions',
    type: 'custom',
    renderComponent: CustomButtonComponent,
    onComponentInitFunction :(instance: any) => {
      instance.retry.subscribe(row => {
       //TODO Refresh Table
    });}
  }
};
  

Пользовательский компонент рендеринга:

  export class CustomButtonComponent implements ViewCell, OnInit {
  renderValue: string;

  @Input() value: string | number;
  @Input() rowData: any;

  @Output() retry: EventEmitter<any> = new EventEmitter();

  constructor(){}

  onRetry() {   
    this.retry.emit(this.rowData);    
  }
}
  

Я пытался написать this.source.refresh(), но получаю ошибку, из-за которой не удается получить доступ к источнику свойства undefined.

Ответ №1:

Я использую оператор spread для обновления данных ng2 smart table:

this.config.results = […this.config.results];

Если вы поместите эту строку в свой код, где у вас есть маркер // TODO, я думаю, это сработает. Не уверен, потому что вы не предоставили демо 🙂

У Zendev есть хорошо читаемая базовая разбивка того, что здесь делает этот оператор. Я надеюсь, что это поможет!