Как вызвать реальный сервис вместо локального JSON в демо-версии «Приступая к работе» (поиск, сортировка, страница и фильтр) - PullRequest
1 голос
/ 03 мая 2019

Работа с полным примером таблицы (с сортировкой, фильтрацией, поиском и разбиением на страницы), которая имитирует вызов сервера с использованием константы JSON.Я пытаюсь сделать так, чтобы это вызывало настоящий API, который возвращает JSON вместо локальной константы.https://ng -bootstrap.github.io / # / components / table / examples # complete

Мне удалось сменить код с демонстрационной версии с использования стран на поставщиков.Например, country.ts - это поставщик.тс, страна.тс - поставщик.ц, а страна.сервис - поставщик.сервис.Это работает, без проблем, но я хочу удалить json-файл country.ts (в моем случае, supplier.ts) и заменить его вызовом http.get для локальной службы API.

Вот пример рабочего кода из службы API, который я пытаюсь вызвать:

  getSuppliers (): Observable<SupplierVM[]> {
    return this.http.get<SupplierVM[]>(apiUrl+'supplier')
      .pipe(
        tap(heroes => console.log('fetched Suppliers')),
        catchError(this.handleError('getSuppliers', []))
      );
  }

Вот пример рабочего вызова из компонента Angular:

allSuppliers:Observable<SupplierVM[]>;
this.allSuppliers=this.api.getSuppliers();

Это метод, который работает в демоверсии (единственное отличие - я использую поставщиков вместо стран)

private _search(): Observable<SearchResult> {
    const {sortColumn, sortDirection, pageSize, page, searchTerm} = this._state;
    // 1. sort
     let suppliers = sort(SUPPLIERS, sortColumn, sortDirection);

    // 2. filter
    suppliers = suppliers.filter(country => matches(country, searchTerm/*, this.pipe*/));
    const total = suppliers.length;

    // 3. paginate
    suppliers = suppliers.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize);
    return of({suppliers, total});
  }

Это работает, когда я вызываю SUPPLIERS из оператора import, но хочу заменить 'ПОСТАВЩИКИ' от метода сортировки к чему-то вроде 'this.allSuppliers' (вроде как пример вызова метода выше.)

// 1. sort
     let suppliers = sort(this.allSuppliers, sortColumn, sortDirection);

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

...