我是Angular的新人,所以我需要你的帮助。我试图从我的data.json用户列表中为我点击的每个用户获取一个ID。所以我有我的用户列表,当我点击其中任何一个时,它打开一个带路由器的新页面,女巫工作正常,我可以获得该用户的ID,但我无法访问他的名字,年龄和其他信息显示在屏幕上,只是ID。
组件
user: any[];
constructor(
private route: ActivatedRoute,
private usersService: UsersService) {
let id = this.route.snapshot.paramMap.get('id');
if(id) this.usersService.getUsers(id).subscribe(user => this.user = user);}
问题是我的服务中没有getUsers(id)
功能,因为我不知道如何从json数据文件中获取ID。我需要你的帮助来实现这一功能。
data.json
[
{
"id": 1,
"firstName": "Paul",
"surname": "Crowe",
"age": 28,
"gender": "male",
"friends": [
2
]
},
{
"id": 2,
"firstName": "Rob",
"surname": "Fitz",
"age": 23,
"gender": "male",
"friends": [
1,
3
]
} ...
]
服务
getUsers() {
return this.http.get('./assets/data.json').map(array => array);
}
这个getUsers并不好我认为拿ID。所以我需要帮助。
提前致谢!
答案 0 :(得分:0)
我想你想要的东西是:
user: any;
constructor(
private route: ActivatedRoute,
private usersService: UsersService) {
let id = this.route.snapshot.paramMap.get('id');
if(id) this.usersService.getUsers().subscribe(users =>
this.user = users.getById(id);}
}
private getUserById(userId: number){
return this.users.filter(u=>u.id===userId);
}
答案 1 :(得分:-1)
使用this.id
if(this.id){
this.usersService.getUsers(this.id).subscribe(user => this.user = user);}
}
修改强>
var users = [
{
"id": 1,
"firstName": "Paul",
"surname": "Crowe",
"age": 28,
"gender": "male",
"friends": [
2
]
},
{
"id": 2,
"firstName": "Rob",
"surname": "Fitz",
"age": 23,
"gender": "male",
"friends": [
1,
3
]
}
];
const user = users.find(t=>t.id ==1);
console.log(user);