我试图使用带有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);
}
我的代码有什么问题?
答案 0 :(得分:1)
更新:
console.log(this.login);
打印一个空数组,因为promise尚未完成,所以如果要打印数据数组,请在subscribe函数中移动该语句。
代码应该是这样的
getUsers(){
this.userService.getUsers().subscribe(
data => {
this.login = data;
console.log(this.login);
}
);
}