Как сделать второй HTTP-вызов для получения данных для детальной сетки - getDetailRowData () - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть основная / подробная сетка ag-Grid. Поэтому, когда строка основной сетки развернута, она загружает детальную сетку.

См. Простой пример: https://www.ag -grid.com / JavaScript-сетка-мастер-деталь / # пример-простой мастер-деталь

Это работает на основе того, что данные для детальной сетки уже были извлечены в исходных данных json, используемых в основной сетке.

Я хочу взять id выбранной строки основной сетки и сделать второй вызов службы HTTP, чтобы получить данные json для подробной сетки.

Простой пример просто отправляет данные json в successCallback следующим образом:

      getDetailRowData: function(params) {
        params.successCallback(params.data.callRecords);
      }

Я пытался изменить этот метод на:

      getDetailRowData: function(params) {
        this.http
          .get(
            "https://gist.githubusercontent.com/adrianwright109/37a5e37ba2382b26f42b9d12a8593878/raw/60d2ffed511262a6a2e7e54e01bffd28c3701c5e/ClientProfiles.json"
          )
          .subscribe(data => {
            params.successCallback(data);
          });

        // params.successCallback(params.data.callRecords);
      }

С этим кодом я получаю следующие ошибки:

ОШИБКА TypeError: Невозможно прочитать свойство 'http' из неопределенного

Ошибка: ag-Grid: невозможно заставить сетку рисовать строки, когда она находится в середине строк чертежа. Ваш код, вероятно, вызвал метод API сетки, когда сетка находилась в стадии рендеринга. Чтобы преодолеть это, поместите вызов API в тайм-аут, например, вместо api.refreshView (), вызовите setTimeout (function () {api.refreshView (), 0}). Чтобы увидеть, какая часть вашего кода, которая вызвала обновление, проверяет эту трассировку стека.

      getDetailRowData: function(params) {
        setTimeout(function() {
          this.http
            .get(
              "https://gist.githubusercontent.com/adrianwright109/37a5e37ba2382b26f42b9d12a8593878/raw/60d2ffed511262a6a2e7e54e01bffd28c3701c5e/ClientProfiles.json"
            )
            .subscribe(data => {
              params.successCallback(data);
            });
        }, 500);

        // params.successCallback(params.data.callRecords);
      }

С этим кодом я получаю следующую ошибку:

ОШИБКА TypeError: Невозможно прочитать свойство 'get' из неопределенного

У меня есть Plunker:

https://next.plnkr.co/plunk/IS5a3jKyDJJSSdh0

Кто-нибудь достиг ленивой загрузки подробных данных сетки из вызова службы веб-API?

1 Ответ

1 голос
/ 10 апреля 2019

Вам нужно использовать Функция стрелки , как показано ниже

  getDetailRowData: (params) => {
    this.http
      .get('.....')
      .subscribe(data => {
        params.successCallback(data);
      });

Посмотрите на обновленный план: https://next.plnkr.co/edit/t84UtB4kALFfAxO1

Если вы используете setTimeout, тогда это должно быть похоже на

  getDetailRowData: (params) => {
    setTimeout(() => {
      this.http
        .get('...')
        .subscribe(data => {
          params.successCallback(data);
        });
    }, 500);

    // params.successCallback(params.data.callRecords);
  }

Подобный пост: бесконечная прокрутка доступа к стороне сервера на стороне сервера ag-grid

...