Nano Hash - криптовалюты, майнинг, программирование

Как использовать компонент таблицы материалов Angular с Paginator, интегрированным в серверную часть?

У меня есть компонент Angular Material Table, и я хочу интегрировать его со своим внутренним сервером. . Я мог бы сделать это для первоначального запроса вне моего источника данных.

Я реализую метод connect в моем DataSource, но мне не удалось получить данные из бэкэнда по этому методу. Это правильный метод? Если да, то как я могу это реализовать? Если нет, как лучше всего получить данные с сервера в моем источнике данных? Эта следующая последняя попытка привела к бесконечному циклу добавления данных в мою таблицу.

  connect(): Observable<any> {
    const displayDataChanges = [
      this._exampleDatabase.dataChange,
      this._paginator.page,
      this._sort.mdSortChange
    ];

    return Observable.merge(...displayDataChanges).map(() => {
      let currentData = null;

      const startIndex = this._paginator.pageIndex * this._paginator.pageSize;

      return this.studentService.query()
        .subscribe(data => {
          currentData = data.students;
          return currentData;
        });

    });
  }

Ответы:


1

Наконец-то я нашел решение.

connect(): Observable<Student[]> {
    //events to listen
    const displayDataChanges = [
      this._sort.mdSortChange,
      this._paginator.page,
      this._filterChange,
    ];

    // If the user changes the sort order, reset back to the first page.
    this._sort.mdSortChange.subscribe(() => {
      this._paginator.pageIndex = 0;
    });

    return Observable.merge(...displayDataChanges)
      .startWith(null)
      .switchMap(() => {
        //call the service method which should return the data
        return this.studentService.query(this._paginator.pageIndex);
      })
      .catch(() => {
        // Catch exceptions
        return Observable.of(null);
      })
      .map(result => {
        // Flip flag to show that loading has finished.
        this.isLoadingResults = false;
        return result;
      })
      .map(result => {
        if (!result) { return []; }

        //set results length (for pagination reasons)
        this.resultsLength = result.tableData.total;

        //return fetched data
        return result.students;
      });

  }
30.07.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..