在Angular 2中使用subscribe获取http响应后获取[object Object]

时间:2017-05-29 07:03:32

标签: angular angularjs-directive angular2-routing angular-services

ProductService.ts

   getProduct(id: number): Observable<IProduct> {

    return this._http.get(this._productUrl + '/GetById/' + 
           id).map((response: Response) => <IProduct>response.json())           
        .catch(this.errorHandler);     
}

ProductDetailComponent.ts

   getProduct(id: number) {
    this._productService.getProduct(id).subscribe(
        res => {               
            console.log('before component ' + res);     
            this.product = res;
            console.log('after component ' + res);                
        },
        error => this.errorMessage = <any>error),
        console.log('execution complete'); 
}

在订阅中收到结果时,它将作为
   执行完成,    在组件[object Object]之前,    在[object object]

之后

3 个答案:

答案 0 :(得分:3)

您正在使用字符串连接(使用+符号)。这样,Javascript将首先将Object转换为字符串([object Object])。如果您不想要,可以这样试试:console.log('before component', res)

请注意逗号,而不是+。这会将对象作为单独的参数传递给console.log,允许您的浏览器或CLI进行渲染。例如,通过这种方式(在浏览器中),您可以展开或折叠对象。

答案 1 :(得分:2)

你需要做JSON.stringify

console.log('before component ' + JSON.stringify(res));  

答案 2 :(得分:1)

您还可以执行以下操作:

console.log('before component',JSON.stringify(res,undefined,2))

以json对象的形式打印[Object object]