Функциональные модули и сервис Firebase

Я только начинаю разбираться в функциональных модулях, и у меня был AngularFire2, работающий над приложением только с основным модулем приложения. Теперь я пытаюсь разбить приложение на отдельные функциональные модули, один из которых — модуль аутентификации, а другой — модуль клиента.

В настоящее время я получаю сообщение об ошибке «error_handler.js: 47 ИСХОДНОЕ ИСКЛЮЧЕНИЕ: приложение Firebase« [ПО УМОЛЧАНИЮ]» не было создано — вызовите 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(/^\w+@[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 };
    }
  }
}

Служба аутентификации

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

person ccocker    schedule 23.09.2016    source источник


Ответы (1)


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

person ccocker    schedule 24.09.2016