2017-01-28 2 views
0

У меня есть следующий почтовый сервис с наблюдаемымиУгловое 2 Машинопись Наблюдаемые возвращаемый результат первого объекта

// 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')); 
} 

Сервер отвечает с объектом он только что создали. Теперь я хочу получить этот один объект и сохранить его в переменной в компоненте.

private myOrder: Order; 

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

В результате тип наблюдаемый [] Я не могу назначить объекту var. Как я могу получить содержимое наблюдаемого в объект var myOrder?

+0

Если он просто возвращает один объект (не массив), вы можете изменить тип возврата вашего метода '' Наблюдаемые вместо массива –

ответ

1

Если вы уверены, что служба возвращает один объект, просто обновить свой тип, как

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

и он должен работать нормально.

На подписываться часть,

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

попробовать это решение.

orderOperation.subscribe(
orders => { 
    if(orders!=undefined){ 

     this.myorder=orders; 
    } 
});