Как показать бадж в цикле ngFor по условию?

Вобщем запутался в простых вещах... Есть два массива:
1) persons с объектами типа
{
name: "Brown",
personId: "dsfrauAUHjfrkf32"
}


2) badges
{
personId: "dsfrauAUHjfrkf32",
badge: true


У меня в компоненте методом NgFor выводится список людей. Нужно сделать так, чтобы при выводе этого списка рядос с именем отображался бадж, если совпадают id и badge = true
То есть сложность для меня в том, что список имен в компоненте формируется из одного массива, а информация по баджам хранится в другом.
Сделано так потому, что эти массивы формируются по subscription из разных коллекций базы данных. И сейчас переписывать логику БД нет времени и желания
  • Вопрос задан
  • 68 просмотров
Решения вопроса 2
shai_hulud
@shai_hulud
1) Запеки в отдельный массив с новым типом который содержит в себе данные из обеих коллекций
2) сделай акцессор на своем компоненте типа hasBadge(personId: string) и дергай его внутри ngFor передавая айди текущего элемента
Ответ написан
Комментировать
Qairat
@Qairat
frontend developer, angular 2+
updateData(persons[], badges[]) {
  let res = persons.map(person = > {
  let findInBadge = badges.find(f => f.personId == person.personId);
    return {
      personId: person.personId,
      name: person.name
      badge: findInBadge.badge
   }
  })
  return res;
}


дальше вызываешь в ngOnInit()

newArray = [];
ngOnInit() {
 this.newArray = this.updateData(this.persons, this.badges);
}


И далее в шаблоне используешь this.newArray;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы