Angular 4/5从JSON获取路由ID

时间:2018-01-30 20:12:15

标签: json angular angular5

我是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。所以我需要帮助。

提前致谢!

2 个答案:

答案 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);