在angular2

时间:2017-09-27 08:11:55

标签: angular

我是angular2中的新手,我想循环键并将user_id更改为用户名。这是user.component.ts的代码。作为回应,我得到这样的结论:[{" 1":" Begginer,professional,"},{" 2":" Begginer&#34 ;},{" 4":"专业,新人"}],我希望将其显示为:

Begginer,专业

B Begineer

C专业,更新鲜

A B C是用户名。

this.userCategories = response;
console.log(JSON.stringify(this.userCategories)); //[{"1":"Begginer ,professional ,"},{"2":"Begginer"},{"4":"Professional, freshers"}]
this.userCategories =  this.userCategories.map( i => {
  let user = [];
  let usr = [];
  const User_id = Object.keys(i)[0]; // here I am getting user_id
  for(let j of User_id){
    this.userService.userName(j).subscribe(
     name => {
       usr.push(name); // pushing name of users in an array.
       return usr;
     },
     err => {
       console.log('err:', err);
     }
    );
  }
  user[0] = usr;
  console.log(user[0]); // here I am getting username in an array.
  user[1] = i[User_id];
  return user;
})

然后考虑当我这样使用时:

<a >{{userCategories[0] | json}}</b>
<a >{{userCategories[1]}}</a>

我得到了:

  [ "\"A \"" ] Begineers,professional
  [ "\"B \"" ] Begineers
  [ "\"C \"" ] Professional,fresher

有谁可以帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试类似的事情: -

let response = [{ "1": "Begineer ,professional ," }, { "2": "Begineer" }, { "4": "Professional, freshers" }];  //JSON Array  [{"1":"Begineer ,professional ,"},{"2":"Begineer"},{"4":"Professional, freshers"}]
/**
 * Please make sure map always return array
 * map() method creates a new array with the results of calling a function for every array element.
 * 
 * And your parsing as Object {"A" : "Begineer,professional"}
 * 
 * to make it as Object use it as
 */
response.map((value, key) => {
    //Get UserName By UserID Function 
    let userId = Object.keys(value)[0];
    this._service.username(userId).subscribe(name => {
        this.userCategories.push({key : name , username : value[userId]}) ;
    })
})

由于* ngFor适用于数组,我已将其转换为数组..

请将您的观点更新为: -

<div *ngFor="let user of userCategories">
        <p>
                <a>{{user.key}}</a>
                <a>{{user.username}}</a>
        </p>
</div>