我有返回一个用户的http方法,这是控制台登录this.usersService.getOneUser()。subscribe(data => {console.log(data)});的样子:
email: "user2@gmail.com"
id: "1"
phoneNumber: "23421234"
userName: "user2"
现在,我必须将接收到的值分配给新的数组对象。我尝试以下代码:
this.users = new Array(1).fill({}).map((_, index) => {
return <User>{
userName: this.usersService.getOneUser().subscribe(data => {JSON.stringify(data.userName)})
};
});
尝试转换为JSON格式,不起作用。如果手动输入值,我可以添加一个用户,问题是如何从http请求中的数据填充该用户
return <User>{
email: 'test@mail.com',
id: '1',
phoneNumber: '12345',
userName: 'user'
};
});
编译器说的是userName:Subcription两种类型都没有足够的重叠
答案 0 :(得分:3)
this.usersService
.getOneUser()
.subscribe(data => this.users = [data]);
应该这样做。
答案 1 :(得分:0)
this.users = new Array(1).fill({}).map((_, index) => {
return <User>{
userName: this.usersService.getOneUser().subscribe(data => {JSON.stringify(data.userName)})
};
});
可能发生的情况是,由于getOneUser()
的调用是异步调用,因此可能尚未完成,因此Array.fill(..
可能会在实际获得用户之前完成执行