【问题标题】:Angular 2 Typescript Observable return first object resultAngular 2 Typescript Observable返回第一个对象结果
【发布时间】:2017-01-28 22:22:43
【问题描述】:

我有以下带有 Observable 的邮政服务

// Add a new order
addOrder(body: Object): Observable<Order[]> {
    let bodyString = JSON.stringify(body);
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    return this.authHttp.post(this.ordersUrl, bodyString, options)
        .map(response => response.json())
        .catch((error: any) => Observable.throw(error.json().error || 'Server error'));
}

服务器用它刚刚创建的对象进行响应。现在我想检索那个对象并将其保存到组件中的 a 变量中。

private myOrder: Order;

// Subscribe to observable
orderOperation.subscribe(
    orders => {
        // Emit list event
        EmitterService.get(this.listId).emit(orders);
        this.myOrder = ? 
    });

由于结果是 observable[] 类型,我无法分配给对象 var。如何将 observable 的内容放入对象 var myOrder?

【问题讨论】:

  • 如果它只返回一个对象(不是数组),您可以将方法的返回类型更改为 Observable&lt;Order&gt; 而不是数组

标签: angular typescript observable


【解决方案1】:

如果您确定服务返回单个对象,只需像这样更新您的类型

addOrder(body: Object): Observable<Order> {

它应该可以正常工作。

在订阅部分,

// Subscribe to observable
orderOperation.subscribe(
    order => {
        // Emit list event
        ...
        this.myOrder = order
    });

【讨论】:

    【解决方案2】:

    试试这个解决方案。

      orderOperation.subscribe(
    orders => {
        if(orders!=undefined){
    
             this.myorder=orders;
         }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 1970-01-01
      • 2014-04-10
      • 2017-03-24
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多