Angular2 / Firebase - EXCEPTION: TypeError: Cannot read property 'push' of undefined
Angular2 / Firebase - EXCEPTION: TypeError: Cannot read property 'push' of undefined
我正在尝试创建 Angular2 和 Firebase Web 应用程序 (CRUD)。我在尝试添加新业务用户时遇到错误。
appComponent.ts 文件:
import { Component, OnInit} from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import {FirebaseService} from './services/firebase.service';
import 'rxjs/add/operator/map';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
providers:[FirebaseService]
})
export class AppComponent implements OnInit {
title = 'app works';
BusinessUsers : Business[];
categories : Category[];
appState: string;
activeKey: string;
constructor(private _firebaseService:FirebaseService) {
}
ngOnInit(){
this.appState = 'default';
this._firebaseService.getBusinessUsers().subscribe(BusinessUsers => {
this.BusinessUsers = BusinessUsers
});
this._firebaseService.getCategories().subscribe(categories => {
this.categories = categories
});
}
changeState(state, key = null){
if(key){
this.activeKey = key;
}
this.appState = state;
}
addBusiness(
website: URL,
){
var created_at = new Date().toString();
var newBusiness = {
website: website,
created_at:created_at
}
this._firebaseService.addBusiness(newBusiness);
this.changeState('default');
}
}
export interface Business {
$Key:string;
address: string;
company?: string;
zipcode: number;
suite: Date;
email: string;
name: string;
website: URL;
}
export interface Category {
$Key:string;
value: string;
}
在 firebase.service.ts
文件中:
import {Injectable} from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
@Injectable()
export class FirebaseService{
BusinessUsers : FirebaseListObservable<Business[]>;
categories : FirebaseListObservable<Category[]>;
constructor(private af:AngularFire) {
}
getBusinessUsers(){
this.BusinessUsers = this.af.database.list('/BusinessUsers') as FirebaseListObservable<Business[]>;
return this.BusinessUsers;
}
getCategories(){
this.categories = this.af.database.list('/Categories') as FirebaseListObservable<Category[]>;
return this.categories;
}
addBusiness(newBusiness): Promise<any>{
return this.businessUsers.push(newBusiness);
}
}
export interface Business {
$Key:string;
address: string;
company?: string;
zipcode: number;
suite: Date;
email: string;
name: string;
website: URL;
}
export interface Category {
$Key:string;
value: string;
}
这是我写文字点击添加时的错误图片:
我有一个 Firebase 数据库。
这是命名约定问题。替换
BusinessUsers : FirebaseListObservable<Business[]>;
和
businessUsers : FirebaseListObservable<Business[]>;
在您的服务文件中。这里 BusinessUsers 应该是 businessUsers。希望这会奏效。
我正在尝试创建 Angular2 和 Firebase Web 应用程序 (CRUD)。我在尝试添加新业务用户时遇到错误。
appComponent.ts 文件:
import { Component, OnInit} from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
import {FirebaseService} from './services/firebase.service';
import 'rxjs/add/operator/map';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css'],
providers:[FirebaseService]
})
export class AppComponent implements OnInit {
title = 'app works';
BusinessUsers : Business[];
categories : Category[];
appState: string;
activeKey: string;
constructor(private _firebaseService:FirebaseService) {
}
ngOnInit(){
this.appState = 'default';
this._firebaseService.getBusinessUsers().subscribe(BusinessUsers => {
this.BusinessUsers = BusinessUsers
});
this._firebaseService.getCategories().subscribe(categories => {
this.categories = categories
});
}
changeState(state, key = null){
if(key){
this.activeKey = key;
}
this.appState = state;
}
addBusiness(
website: URL,
){
var created_at = new Date().toString();
var newBusiness = {
website: website,
created_at:created_at
}
this._firebaseService.addBusiness(newBusiness);
this.changeState('default');
}
}
export interface Business {
$Key:string;
address: string;
company?: string;
zipcode: number;
suite: Date;
email: string;
name: string;
website: URL;
}
export interface Category {
$Key:string;
value: string;
}
在 firebase.service.ts
文件中:
import {Injectable} from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
@Injectable()
export class FirebaseService{
BusinessUsers : FirebaseListObservable<Business[]>;
categories : FirebaseListObservable<Category[]>;
constructor(private af:AngularFire) {
}
getBusinessUsers(){
this.BusinessUsers = this.af.database.list('/BusinessUsers') as FirebaseListObservable<Business[]>;
return this.BusinessUsers;
}
getCategories(){
this.categories = this.af.database.list('/Categories') as FirebaseListObservable<Category[]>;
return this.categories;
}
addBusiness(newBusiness): Promise<any>{
return this.businessUsers.push(newBusiness);
}
}
export interface Business {
$Key:string;
address: string;
company?: string;
zipcode: number;
suite: Date;
email: string;
name: string;
website: URL;
}
export interface Category {
$Key:string;
value: string;
}
这是我写文字点击添加时的错误图片:
我有一个 Firebase 数据库。
这是命名约定问题。替换
BusinessUsers : FirebaseListObservable<Business[]>;
和
businessUsers : FirebaseListObservable<Business[]>;
在您的服务文件中。这里 BusinessUsers 应该是 businessUsers。希望这会奏效。