没有 AngularFireDatabase、AngularFireAuth 的提供者

No provider for AngularFireDatabase, AngularFireAuth

抱歉,我想不出更好的方法来包含所有信息...当我 运行 这样做时,我收到一条错误消息,内容如下。我已经按照 Ionic Docs 到 T,我无法弄清楚可能有什么问题。

错误:

No provider for AngularFireDatabase!

Package.json

App.module.ts

Home.html

Home.ts

AngularDatabase(与 AngularAuth 相同) 分离到它自己的模块 AngularFireDatabaseModule(AngularAuth 的 AngularFireAuthModule ) 从 版本 angularFire2@4.0.0,参见 文档 here.

您应该在 RootModule.

中导入 AngularFireDatabaseModule(AngularFireAuthModule for Authentication)
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
  ]
})

app.module.ts里面添加:

import { AngularFireModule } from 'angularfire2';

import { AngularFireDatabaseModule } from 'angularfire2/database';

然后导入如下:

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

里面home.ts使用如下:

import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';

items: FirebaseListObservable<any[]>;

  constructor(public navCtrl: NavController, db: AngularFireDatabase) {
        this.items = db.list('/items');
  }

我的 Ionic 信息:

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

将其添加到 app.module.ts 中的 providers 数组中 -

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

我的 Angular 申请中出现了这个错误。结果是我的自动导入从“angularfire2/database-deprecated”导入了 AngularFirebase。清除 -deprecated 解决了我的问题。您可能还想检查您的导入。

如果您使用来自 angularfire2/database-deprecated

的 FireBaseDatabase,请确保从 angularfire2/database-deprecated 导入 FireBaseDatabaseModule

反之亦然。唯一的问题是导入语句不匹配,因为它们需要属于同一个包

angularfire2/database 或 angularfire2/database-deprecated

如果您尝试从第一个包导入数据库并从第二个包导入模块,反之亦然。它不会将其识别为数据库模块或数据库。

------------根模块------------

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

--------服务CLASS------------

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

使用 firebase 的更新版本将在 app.module.ts

import { AngularFireModule } from '@angular/fire';
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { AngularFireAuthModule } from '@angular/fire/auth';
import { AngularFireDatabaseModule } from '@angular/fire/database';



imports: [
AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule,
AngularFireAuthModule,
AngularFireDatabaseModule,
....
]