2017-01-30 72 views
0

我想围绕Angular 2中的observables如何工作而不是将它们用作模式。如果我像下面那样创建一个基本的可观察元素,我可以调用source变量的subscribe方法,该变量是创建observable并将其赋值给source变量的结果。Observable如何在Angular 2中工作

let numbers = [19, 38, 57]; 
let source = Observable.from(numbers); 

source.subscribe(
    value => console.log(`value: ${value}`), 
    error => console.log(`error: ${error}`), 
() => console.log('complete') 
); 

在角2 I有以下代码:

组件:

private getDevicesByUserId(): void { 
    this.devicesHttp.getDevicesByUserId(this.userID) 
    .subscribe(
     data => { 
     this.devices = data; 
     }, 
     error => {}, 
    () => {} 
    ); 
} 

HTTP服务:

public getDevicesByUserId(userID: number): Observable<any> { 
    return this.http.get(this.url + 'api/device/user/' + userID, { 
    headers: this.httpHeaders.getHeaders() 
    }) 
    .map((response) => this.handleData(response)) 
    .catch((error) => this.handleError(error)); 
} 

在上面的模式中,我调用了getDevicesByUserId函数的subscribe方法,但在http中没有创建可观察对象。也许我错过了一些东西,但它只是一个返回http调用结果的函数。我如何能够像这样的常规功能调用订阅方法?如果我没有创建一个observable,函数如何具有这个属性?

回答

0

Angular 2 Http service函数getpost是内置的返回一个冷的Observable返回一个响应。

您不必显式创建Observable。如果您愿意,可以通过http代码here

作为一个冷观察者,请求本身在观察者订阅时发送。 更多关于hot and cold observable here 您的getDevicesByUserId在您自己的服务中返回您最终在组件中订阅的相同观察值。

希望这会清除它。

+0

是的,非常感谢。 – Aaron