私の顧客テーブルのinitのデータをプロジェクトリストに結合したいと思います。フラット化されたデータに結合
モデルは、このようなものです:
- キー
プロジェクト
- 名:文字列
- 顧客:customerKey
顧客
- キー
- 名前:あなたは私がangularfire2を使用してangular2コンポーネントからこれを行う方法を、例を文字列
を持っていますか?
私のコントローラは次のようになります:私は私のngOnInitに()メソッドは次のように今見えるFirebaseListObservable から観察可能にthis.projectsの種類を変更した
import { Component, OnInit } from '@angular/core';
import { Project } from '../project';
import { Router } from '@angular/router';
import { FirebaseAuth } from 'angularfire2';
import { AngularFire, FirebaseListObservable, FirebaseObjectObservable } from 'angularfire2';
import { Observable } from 'rxjs';
@Component({
moduleId: module.id,
selector: 'app-projects',
templateUrl: 'projects.component.html',
styleUrls: ['projects.component.css']
})
export class ProjectsComponent implements OnInit {
projects: FirebaseListObservable<any[]>;
customers: FirebaseListObservable<any[]>;
projectName: string;
constructor(
private router: Router,
private af: AngularFire
) { };
ngOnInit() {
this.projects = this.af.database.list('projects');
}
add(projectName: string) {
this.af.database.list('projects')
.push({ name: projectName, id: '123' });
this.projectName = null;
}
}
更新
ngOnInit() {
this.projects = this.af.database.list(`projects`)
.map(projects => {
projects.map(project => {
this.af.database.object('customer/' + project.customer + '/name')
.subscribe(customer => {
project.customer = customer;
})
return project;
})
return projects;
});
}
これで、顧客の名前のプロパティではなく、内部のテンプレートからアクセスできるようになりました
<li *ngFor="let project of projects | async">
project.customer.$value
テンプレートを表示したり、より良い文脈を提供したり、plnkrを作成したりできますか? –
こんにちはDavidさん、モデルの説明を投稿に追加しました。テンプレートの中には何も特別なものはありません - > "プロジェクトのプロジェクトを非同期にしましょう"。 私の問題は、関連顧客を取得する方法です。"projects"からデータをストリーミングしてthis.project.customerをこの値に設定している間にcustomersテーブルの名前 – Alex