在Angular 2中订阅和映射

时间:2017-11-19 01:32:27

标签: javascript angular typescript

我尝试从我的json文件中获取数据

ngOnInit() {
   this.http.get('assets/json/buildings.json',  { responseType: 'text'})
    .map(response => response)
     .subscribe(result => this.data = result);
    console.log(this.data);
}

但是我得到了undefined ...请帮助我并解释为什么我没有得到我的数据。

2 个答案:

答案 0 :(得分:3)

您正在获取未定义,因为您的调用日志立即生效,但设置“data”的响应是异步的,因此在api返回值之前它不会被设置。

如果你这样做:

this.http.get('assets/json/buildings.json',  { responseType: 'text'})
  .map(response => response)
  .subscribe(result => {
     this.data = result;
     console.log(this.data);
  });

你会看到这个值,因为现在你等到它被异步提取后才会尝试记录它。

答案 1 :(得分:0)

如果您只是返回响应

,为什么还要使用map函数?
this.http.get('assets/json/buildings.json',  { responseType: 'text'})
  .subscribe(result => {
     this.data = result;
     console.log(this.data);
  });