分配给接口的Json对象不工作angular2

时间:2016-07-17 10:12:08

标签: json typescript angular

我试图使用带有observable的http get,我为它创建一个服务并返回一个对象。

我的界面

export interface Login {
login : boolean;
username : string;
type: string;
token: string;
email: string;
name: string;
}

我的服务

getUsers(){
this.url = 'http://127.0.0.1:5000/api/users';
return this.callApi(this.url);
}

callApi(url: string): Observable<Login[]> {
return this.http.get(url).map(this.extractData).catch(this.handleError);
}

private extractData(res: Response) {
let body = res.json();
// console.log(body['result']);
return body.result || { };
}

我在我的组件中使用此服务,它会返回如下所示的对象。

[Object, Object]
  0: Object
    email: "admin@gmail.com"
    id: "5788995b008b2f1af2e33f78"
    name: "admin"
    type: "admin"
    user_name: "admin"
  __proto__: Object
 1: Object
 length: 2

当我尝试将其映射到Login对象的数组时,它无法正常工作。当我尝试让控制台登录时,它会显示[]这个。

我的组件

private login : Login[] = [];
mode = 'Observable';

constructor(private userService: UserService) {}

ngOnInit() {
  this.getUsers();
}

getUsers(){
  this.userService.getUsers().subscribe(
   data => this.login = data
  );

 console.log(this.login);
 }

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

更新: console.log(this.login);打印一个空数组,因为promise尚未完成,所以如果要打印数据数组,请在subscribe函数中移动该语句。

代码应该是这样的

getUsers(){
  this.userService.getUsers().subscribe(
   data => {
             this.login = data;
             console.log(this.login);
  }
  );

}