如何转换数组中的可观察数组并返回该新数组?

时间:2019-06-19 10:06:39

标签: arrays angular typescript observable

我试图在数组中转换一个可观察的数组,并在get函数中使用传播运算符返回新数组。

在尝试通过map运算符进行订阅之前,我尝试手动转换可观察数组,但目前尚无解决方案(它仍然是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分配我在函数getAllOrder()中执行的html请求的响应,但在那里它返回Order[]的Observable而不是数组,因此我可以只需返回[...this._orders] 希望您能理解我的意思。 谢谢您的任何建议!

1 个答案:

答案 0 :(得分:-1)

您可以执行类似的操作。但是这段代码是异步的。小心点。

//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];
   }
}