2016-12-06 28 views
1

我正在尝试创建一个Angular2和Firebase Web应用程序(CRUD)。我尝试添加新的业务用户时出现错误。Angular2/Firebase - EXCEPTION:TypeError:无法读取未定义的属性'push'

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; 
} 

这是错误的图像时,我写的文字,然后点击添加:

enter image description here

我有一个Firebase数据库。

+0

最新含义! –

回答

0

这是命名约定问题。更换

BusinessUsers : FirebaseListObservable<Business[]>; 

businessUsers : FirebaseListObservable<Business[]>; 
在你的服务文件

。这里商务用户应该是商务用户。希望这会起作用。

+0

确定其工作,但我得到一个红线在this.businessUsers.push(newBusiness); –

+0

你必须替换其他地方......你正在使用'this.BusinessUsers'的地方。 –

+0

它适合你吗? –

相关问题