Я довольно новичок в Angular and Firebase, так что извините, если вопрос тривиален.Как отображать информацию о связанных объектах с одного объекта в angularfire2
Я хотел бы знать, как отображать информацию о связанных объектах с одного объекта в angularfire2?
В принципе, я хочу отображать имена ролей, назначенные пользователю.
Вот что я имею в базе данных Firebase.
role : {
roleKey1 : {
name : Designer
...
},
roleKey2 : {
name : Manager
...
}
},
user: {
userKey1 : {
name : Bill,
roles : {
roleKey1: true,
roleKey2: true,
},
...
},
userKey2 : {
name : Steve,
roles : {
roleKey1: true,
},
...
},
}
В мой контроллер у меня есть следующие:
export class UserComponent implements OnInit {
public user: Observable<any>;
public id: string;
constructor(private af: AngularFire, private activatedRoute: ActivatedRoute) {
}
public ngOnInit() {
const id = this.activatedRoute.params.subscribe(params => {
if (params['id']) {
this.id = params['id'];
console.log(params['id']);
}
});
this.user = this.af.database.object('/user/' + this.id)
.switchMap((user) => {
const roleKeys = Object.keys(user.roles);
return Observable.forkJoin(
roleKeys.map((roleKey) => this.af.database.object('/role/' + roleKey)
.first()
),
(...roles) => {
roleKeys.forEach((roleKey, index) => {
user.roles[roleKey] = roles[index];
});
return user;
}
);
});
}
В моем шаблоне я следующее:
<h2>Name: {{ (user | async)?.name }} roles</h2>
<ul *ngFor="let role of user.roles | async">
<li>{{ role.name }}</li>
</ul>
Текущий результат: отображается только имя пользователя. не Ничто для роли
Ожидаемые результаты:
с URL: https://.../user/userKey1
- Билл ролях:
- Менеджер
- Дизайнер
- Билл ролях:
с URL: https://.../user/userKey2
- Стив роли:
- Дизайнер
- Стив роли:
Спасибо за вашу помощь!
что выход 'console.log (пользователь)' – sugarme
Привет @sugarme. Вывод console.log (this.user) - это FirebaseObjectObservable {_isScalar: false, $ ref: U, source: FirebaseObjectObservable, operator: SwitchMapOperator} – Marco
, пожалуйста, посмотрите мое решение в ответе. Еще немного дольше. Интерфейсы, созданные для адаптации структуры данных и шаблона html. Сообщите мне, есть ли какие-либо ошибки из консольного представления. – sugarme