No provider for AngularFireDatabase, AngularFireAuth

久未见 提交于 2019-11-27 01:20:35

AngularDatabase(same for AngularAuth) is separated to its own module AngularFireDatabaseModule(AngularFireAuthModule for AngularAuth) from version angularFire2@4.0.0, see documentation here.

you should import AngularFireDatabaseModule(AngularFireAuthModule for Authentication) in your RootModule.

import { AngularFireModule } from 'angularfire2'; // for AngularFireDatabase import { AngularFireDatabaseModule } from 'angularfire2/database'; import { AngularFireDatabase, FirebaseObjectObservable } from 'angularfire2/database'; // for AngularFireAuth import { AngularFireAuthModule } from 'angularfire2/auth'; import { AngularFireAuth } from 'angularfire2/auth';  @NgModule({   imports: [     AngularFireModule.initializeApp({         <---- main module       apiKey: ...,       authDomain: '...',       databaseURL: '...',       storageBucket: '...',       messagingSenderId: '...'     }),                                            AngularFireDatabaseModule,                <---- for database      AngularFireAuthModule                     <---- for auth   ] }) 

Inside app.module.ts add below:

import { AngularFireModule } from 'angularfire2';  import { AngularFireDatabaseModule } from 'angularfire2/database'; 

Then import as below:

@NgModule({   declarations: [     MyApp,     HomePage   ],   imports: [     BrowserModule,     IonicModule.forRoot(MyApp),     AngularFireModule.initializeApp(firebaseConfig),     AngularFireDatabaseModule   ], 

Inside home.ts use as below:

import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';  items: FirebaseListObservable<any[]>;    constructor(public navCtrl: NavController, db: AngularFireDatabase) {         this.items = db.list('/items');   } 

My Ionic info:

Ionic Framework: 3.1.1 Ionic App Scripts: 1.3.7 Angular Core: 4.0.2 Angular Compiler CLI: 4.0.2 Node: 6.10.1 OS Platform: macOS Sierra 
Amrit Pal Singh

Make sure FireBaseDatabaseModule is imported from angularfire2/database-deprecated if youre using FireBaseDatabase from angularfire2/database-deprecated

and vice-versa. The only problem is the mismatch of import statements because they need to belong to the same package either

angularfire2/database or angularfire2/database-deprecated

if you would try to import the database from the first and the module from the second package or vice-versa. It wont recognize it as a DatabaseModule or Database.

------------ ROOT MODULE -------------

    import { AngularFireDatabaseModule } from "angularfire2/database-deprecated"     imports: [         BrowserModule,         RouterModule.forRoot(appRoutes),         FormsModule,         AngularFireModule,         AngularFireDatabaseModule,         AngularFireAuthModule,         AngularFireModule.initializeApp(environment.firebase)     ] 

------- SERVICE CLASS ------------

import { AngularFireDatabase, FirebaseListObservable } from "angularfire2/database-deprecated"; 

Add it in providers array in app.module.ts -

  imports: [     BrowserModule,     FormsModule,     HttpModule,     RouterModule.forRoot(appRoutes),     AngularFireModule.initializeApp(firebaseConfig)   ],   providers: [AuthService,**AngularFireAuth, AngularFireDatabase**, AuthGuard, InventoryService] 

I had this error in my Angular application. It turns out my auto-import imported AngularFirebase from 'angularfire2/database-deprecated'. Clearing the -deprecated solved my issue. You might want to check your imports too.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!