Datatable - не может вызвать службу внутри пользовательского действия - PullRequest
0 голосов
/ 27 марта 2020

In Angular У меня есть Datatable . Эта таблица данных имеет настраиваемую кнопку и действие, например:

 buttons: {
         buttons: [
        {
          action: function(e, dt, node, config) {
            this.meterListCtrl.download(DATA).subscribe(
              response => {
              saveAs(response,moment_timezone(Date.now()).format("YYYY-MM-DD")+".csv")}
            )}
        }
      ],
      dom: {
          button: {
            tag: "i",
            className: "fas fa-file-excel excel pointer",
            titleAttr: 'Exportar'
          },
        }
      },

Проблема: Когда я нажимаю на нижнюю, возвращаем Невозможно прочитать свойство 'download' из неопределенного - Это .download - это функция, которая вызывает сервис.

Итак: Кто-нибудь знает, как я могу исправить эту ошибку?

1 Ответ

0 голосов
/ 27 марта 2020

Я исправил странный код ....

Объявите $ использовать ванильный файл JS в .ts.

declare var $: any;

Затем в датируемые кнопки добавьте пользовательский class в элементе className

buttons: {
        buttons: [
          {
            text: "Exportar"
          }
        ],
        dom: {
          button: {
            tag: "btn",
            className: "btn btn-primary export"
          }
        }
      },

Наконец, определите, когда щелкнули по этому классу.

 $(document).on("click", ".export", () => {
      this.export();
    });

И вызовите функцию экспорта

 export() {
    this.meterListCtrl
      .download(localStorage.getItem("API"))
      .subscribe(response => {
        saveAs(
          response,
          moment_timezone(Date.now()).format("YYYY-MM-DD") + ".csv"
        );
      });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...