我是Angular和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>
當前的結果:顯示用戶的名稱即可。 沒有爲角色
預計業績:
-
- 比爾角色:
- 經理
- 設計師
- 比爾角色:
-
- 史蒂夫角色:
- 設計師
- 史蒂夫角色:
謝謝您的幫助!
是什麼'的console.log(用戶)' – sugarme
@sugarme嗨的輸出。 console.log(this.user)的輸出是FirebaseObjectObservable {_isScalar:false,$ ref:U,source:FirebaseObjectObservable,operator:SwitchMapOperator} – Marco
請在答案中查看我的解決方案。雖然有點長。創建的接口適應您的數據結構和html模板。讓我知道是否從控制檯視圖中有任何錯誤。 – sugarme