Переписывание службы Angular 4 на angular 7 вызвало проблему с Rxjs - PullRequest
0 голосов
/ 13 марта 2019

У меня проблемы с переписыванием угловых 4 сервисов в угловые 7 компактных кодов

Угловой 4 код:

  public load(): Observable<Product[]> {
    return this.cache<Product[]>(() => this.products,
      (val: Observable<Product[]>) => this.products = val,
      () => this.http
        .get(this.apiUrl + "/products")
        .map((response) => response.json()
          .map((item) => {
            let model = new Product();
            model.updateFrom(item);
            return model;
          })));

  }  

То, что я до сих пор пытался переписать для поддержки Angular 7, используя httpClient вместо http:

  public all(): Observable<Product[]> {
    return this.cache<Product[]>(() => this.products,
      (val: Observable<Product[]>) => this.products = val,
      () => this.http
        .get(this.apiUrl + "/products")
        .pipe(map((response: Product) => {
          let result: Product[] = [];
          let model = new Product();
          model.updateFrom(response);
          result.push(model);
          return result;
        }))
          );

  }

Я не уверен, что это правильный способ сделать это. просмотрел документ и другие темы, но не смог найти ответ. Пожалуйста, дайте ваши предложения

1 Ответ

1 голос
/ 13 марта 2019

Поскольку вы не упоминаете, какая у вас проблема, я предполагаю, что у вас возникли проблемы с отображением результата, возвращенного из HTTP-запроса.

Результатом, возвращаемым из запроса get, должен быть массив, который необходимо преобразовать в массив Product s. Поэтому должно быть:

...

() => this.http.get(this.apiUrl + "/products")
       .pipe(
          map((response: Array<any>) => {

            let result:  Array<Product> = [];

            response.forEach((responseModel) => {
                let model = new Product();
                model.updateFrom(responseModel);
                result.push(model);
            });


            return result;
         })
       )

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...