首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在angular2中从observable中获取数据

如何在angular2中从observable中获取数据
EN

Stack Overflow用户
提问于 2016-04-04 13:40:18
回答 3查看 184.4K关注 0票数 85

我正在尝试使用rxjsAngular中打印http调用的结果

考虑以下代码

代码语言:javascript
复制
import { Component, Injectable, OnInit } from '@angular/core';
import { Http, HTTP_PROVIDERS } from '@angular/http';
import 'rxjs/Rx';

@Injectable()
class myHTTPService {
  constructor(private http: Http) {}

  configEndPoint: string = '/my_url/get_config';

  getConfig() {

    return this.http
      .get(this.configEndPoint)
      .map(res => res.json());
  }
}

@Component({
    selector: 'my-app',
    templateUrl: './myTemplate',
    providers: [HTTP_PROVIDERS, myHTTPService],


})
export class AppComponent implements OnInit {

    constructor(private myService: myHTTPService) { }

    ngOnInit() {
      console.log(this.myService.getConfig());
    }
}

每当我试图打印出getconfig的结果时,它总是返回

代码语言:javascript
复制
Observable {_isScalar: false, source: Observable, operator: MapOperator}

即使我返回的是一个json对象。

我如何打印getConfig的结果?

EN

回答 3

Stack Overflow用户

发布于 2016-04-04 13:41:32

您需要订阅observable并传递一个处理发出的值的回调

代码语言:javascript
复制
this.myService.getConfig().subscribe(val => console.log(val));
票数 112
EN

Stack Overflow用户

发布于 2016-04-04 13:49:21

从Angularjs1.x开始,Angular是基于observable而不是promise base的,所以当我们尝试使用http获取数据时,它会返回observable而不是promise,就像您所做的那样

代码语言:javascript
复制
 return this.http
      .get(this.configEndPoint)
      .map(res => res.json());

然后,为了获取数据并显示在视图上,我们必须使用.map() function and .subscribe()等RxJs函数将其转换为所需的形式

.map()用于将可观察对象(从http请求接收)转换为任何格式,如Angular官方网站中所述的.json(), .text()

.subscribe()用于订阅那些可观察到的响应,并将其放入某个变量中,以便将其显示到视图中

代码语言:javascript
复制
this.myService.getConfig().subscribe(res => {
   console.log(res);
   this.data = res;
});
票数 26
EN

Stack Overflow用户

发布于 2016-04-04 14:10:29

代码语言:javascript
复制
this.myService.getConfig().subscribe(
  (res) => console.log(res),
  (err) => console.log(err),
  () => console.log('done!')
);
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36395252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档