Как преобразовать наблюдаемый массив в массив и вернуть этот новый массив? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь преобразовать наблюдаемый массив в массив и вернуть новый массив с помощью оператора распространения в функции get.

Я пытался преобразовать наблюдаемый массив вручную перед подпиской с помощью оператора карты, но решения не видно (он остается наблюдаемым типа void) Как мне преобразовать это наблюдаемое в массиве, чтобы использовать оператор распространения в get orders(), где я возвращаю тип массива? Мне это нужно для расчета ...

//in grid.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Order } from '../order/order.model';


@Injectable({
    providedIn: 'root'
})
export class OrderGridService{

constructor(private http: HttpClient){}

private _orders: Order[];

getAllOrder(): Observable<Order[]> {
  return this.http.get<Order[]>(this._orderURL + "/" + 
   this.userID + "/" + this.currentUservalueToken);
 };

    get orders(): Order[] {
        return [...this._orders];
    }

}

Мне нужно присвоить переменной _orders ответ html-запроса, который я делаю в функции getAllOrder(), но там он возвращает Observable Order[] вместо массива, чтобы я мог просто вернуть [...this._orders] Я надеюсь, вы понимаете, что я пытаюсь сказать .. Спасибо за любой совет!

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете сделать что-то подобное.Но этот код асинхронный.Будьте осторожны с этим.

//in grid.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Order } from '../order/order.model';


@Injectable({
    providedIn: 'root'
})
export class OrderGridService{

   constructor(private http: HttpClient){
      // on init of this service get data from an api
      this.getAllOrder().subscribe(data => {
         this._orders = data;
      })
   }

   private _orders: Order[];

   getAllOrder(): Observable<Order[]> {
      return this.http.get<Order[]>(this._orderURL + "/" + 
         this.userID + "/" + this.currentUservalueToken);
   };

   get orders(): Order[] {
      return [...this._orders];
   }
}
...