Преобразование объекта с помощью оператора Map в Angular - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу добавить мир «ПОЛЬЗОВАТЕЛЬ» к каждому имени, полученному с сервера, и отобразить его на Angular.

У меня есть следующий json, который будет возвращен из моего API.

[
  {
    "id": "1",
    "name": "ABC",
    "IsActive": "Yes"
  },
  {
    "id": "2",
    "name": "XYZ",
    "IsActive": "Yes"
  },
  ...
]

Интерфейс модели следующий:

export interface model {
  id: string;
  name: string;
  routerLink: string;
} 

Использование следующей функции для вызоваapi.

getUser() {
  return this.HttpC.get<model>("http://localhost:4200/assets/testingdata/user.json");
}

Мой Component.ts выглядит следующим образом

...
constructor(private serv: AuthService) {}

ngOnInit() {
  this.serv.getUser()
    .pipe(
      map(x => "User " + x.name)
    )
    .subscribe((m) => {
      console.log(m);
    })
}

В выводе консоли я получаю результат как:

**User Undefined** 

и возвращается только одна строка

Я ожидал получить такие данные, как пользователь ABC Пользователь XYZ

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018
    const test = of([
        {
            'id': '1',
            'name': 'ABC',
            'IsActive': 'Yes'
        },
        {
            'id': '2',
            'name': 'XYZ',
            'IsActive': 'Yes'
        }
    ]);

    test.subscribe(users => {
        users.forEach(user => {
            user.name = 'User ' + user.name;
        });
        console.log(users);
    });
0 голосов
/ 19 сентября 2018

Попробуйте использовать приведенный ниже фрагмент кода:

constructor(private serv:AuthService){}
ngOnInit()
  {
	this.serv.getUser()
     .pipe(
       map( users => {
        return users.map(user => {
				user.name = `User ${user.name}`;
				return user;
        };
		})
       )
     .subscribe( (m)=>{
       console.log(m);
      })
}
...