from Nenhum fornecedor para AngularFireDatabase, AngularFireAuth



firebase angular query (4)

Desculpas porque não consigo pensar em uma maneira melhor de incluir todas as informações ... Quando eu executo isso, recebo um erro dizendo o seguinte. Eu segui o Ionic Docs para o T, não consigo descobrir o que poderia estar errado.

Erro:

Nenhum provedor para AngularFireDatabase!

Package.json

App.module.ts

Home.html

Home.ts


Answer #1

Dentro app.module.ts adicionar abaixo:

import { AngularFireModule } from 'angularfire2';

import { AngularFireDatabaseModule } from 'angularfire2/database';

Então importe como abaixo:

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

Dentro home.ts usar como abaixo:

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

items: FirebaseListObservable<any[]>;

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

Minha informação iônica:

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

Answer #2

AngularDatabase (o mesmo para AngularAuth ) é separado em seu próprio módulo AngularFireDatabaseModule ( AngularFireAuthModule for AngularAuth ) da versão [email protected] , veja a documentação here .

você deve importar o AngularFireDatabaseModule ( AngularFireAuthModule for Authentication ) no seu 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
  ]
})

Answer #3

Certifique-se de que o FireBaseDatabaseModule seja importado de angularfire2 / database-deprecated se você estiver usando o FireBaseDatabase de angularfire2 / database-deprecated

e vice versa. O único problema é a incompatibilidade das instruções de importação porque elas precisam pertencer ao mesmo pacote

angularfire2 / database ou angularfire2 / database-deprecated

se você tentasse importar o banco de dados do primeiro e o módulo do segundo pacote ou vice-versa. Ele não irá reconhecê-lo como um DatabaseModule ou Database.

------------ MÓDULO RADICULAR -------------

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

------- CLASSE DE SERVIÇO ------------

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

Answer #4

Adicione-o na matriz de provedores em app.module.ts -

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