2016-09-23 1 views
0

Я только начинаю размахивать модулями функций, и у меня AngularFire2 работает над приложением только с основным модулем приложения. Теперь я пытаюсь разбить приложение на отдельные функциональные модули, одним из которых является модуль аутентификации, а один - модуль Customer.Feature Modules & Firebase Service

В настоящее время вы видите сообщение "error_handler.js: 47 ORIGINAL EXCEPTION: No Firebase App '[DEFAULT]' было создано - вызвать Firebase App.initializeApp()." Однако я инициализирую это на корневом уровне, поэтому не совсем понимаю, почему это не работает.

App.Module

import { NgModule } from '@angular/core'; 
import { HttpModule } from '@angular/http'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { ReactiveFormsModule } from '@angular/forms'; 

import * as firebase from 'firebase'; 
import { AngularFireModule } from 'angularfire2'; 

import { AppComponent } from './app.component'; 
import { CustomerModule } from "./customer/customer.module"; 
import { AuthenticationModule } from "./authentication/authentication.module"; 
import { AuthenticationService } from "./authentication/authentication.service"; 

const firebaseConfig = { 
    apiKey: "", 
    authDomain: "", 
    databaseURL: "", 
    storageBucket: "" 
} 

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    ReactiveFormsModule, 
    HttpModule, 
    AngularFireModule.initializeApp(firebaseConfig), 
    CustomerModule, 
    AuthenticationModule 
    ], 
    providers: [AuthenticationService], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

Модуль клиента

import { NgModule } from "@angular/core"; 
import { CommonModule } from "@angular/common"; 

import { ReactiveFormsModule } from "@angular/forms"; 

import { customerRouting } from "./customer.routing"; 
import { CustomerComponent } from "./customer.component"; 
import { RegistrationComponent } from "./registration/registration.component"; 

@NgModule({ 
    declarations: [CustomerComponent, RegistrationComponent], 
    imports: [CommonModule, ReactiveFormsModule, customerRouting] 
}) 
export class CustomerModule {} 

Модуль аутентификации

import { NgModule } from "@angular/core"; 
import { CommonModule } from "@angular/common"; 

@NgModule({ 
    declarations: [], 
    imports: [CommonModule] 
}) 
export class AuthenticationModule {} 

регистрации компонентов

import { Component, OnInit } from '@angular/core'; 
import { FormBuilder, FormGroup, Validators, FormControl } from "@angular/forms"; 

import { AuthenticationService } from "../../authentication/authentication.service"; 

@Component({ 
    selector: 'mj-registration', 
    templateUrl: './registration.component.html', 
    styleUrls: ['./registration.component.css'] 
}) 
export class RegistrationComponent implements OnInit { 

    myForm: FormGroup; 
    error = false; 
    errorMessage = ''; 

    constructor(private fb: FormBuilder, private authService: AuthenticationService) { } 

    ngOnInit() { 

    this.myForm = this.fb.group({ 
     organisation: ['', Validators.required], 
     email: ['', Validators.compose([ 
     Validators.required, 
     this.isEmail 
     ])], 
     password: ['', Validators.required], 
     confirmPassword: ['', Validators.compose([ 
     Validators.required, 
     this.isEqualPassword.bind(this) 
     ])], 
    }); 
    } 

    onSignup() { 
    this.authService.signupUser(this.myForm.value); 
    } 

    isEmail(control: FormControl): { [s: string]: boolean } { 
    if (!control.value.match(/^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$/)) { 
     return { noEmail: true }; 
    } 
    } 

    isEqualPassword(control: FormControl): { [s: string]: boolean } { 
    if (!this.myForm) { 
     return { passwordsNotMatch: true }; 
    } 
    if (control.value !== this.myForm.controls['password'].value) { 
     return { passwordsNotMatch: true }; 
    } 
    } 
} 

Authentication Service

import { Injectable } from "@angular/core"; 

import { User } from "./user-model"; 

import { Router } from "@angular/router"; 

declare var firebase: any; 

@Injectable() 
export class AuthenticationService { 

    constructor(
    private router: Router) { 
    } 

    signupUser(user: User) { 

    //Create new user based on the email and password provided 
    firebase.auth().createUserWithEmailAndPassword(user.email, user.password) 
     .catch(function (error) { 
     console.log(error); 
     }); 
    } 
} 

ответ

0

Я решил этот вопрос, оказывается, у меня было все настроено правильно, но он забыл поставить в моем customer.service.