【发布时间】:2016-11-20 03:58:38
【问题描述】:
我想将我的客户表中的 init 数据加入到项目列表中。
模型是这样的:
-
项目
- 键
- 名称:字符串
- 客户:客户密钥
-
客户
- 键
- 名称:字符串
你有一个例子,我如何使用 angularfire2 从 angular2 组件中做到这一点?
我的控制器如下所示:
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;
}
}
更新
我已将 this.projects 的类型从 FirebaseListObservable 更改为 Observable 我的 ngOnInit() 方法现在看起来像这样:
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 来提供更多上下文?
-
嗨,大卫,刚刚在帖子中添加了模型描述。模板内部没有什么特别的 - >“让项目的项目|异步”。我的问题是,如何在从“项目”流式传输数据时从客户表中获取相关的 customer.name 并将 this.project.customer 设置为此值
标签: javascript angular firebase-realtime-database angularfire2