title | eleventyNavigation | ||||
---|---|---|---|---|---|
Getting started |
|
Before you start installing AngularFire, make sure you have latest version of Ionic cli installed. To verify run the command ionic -v
and check your version. The CLI should be at least version 3.0.0 or greater.
If not, you may need to do the following:
# if you have the wrong cli version only
npm uninstall -g ionic
npm cache clean
# reinstall clean version
npm install -g @ionic/cli
ionic start <project-name>
cd <project-name>
The Ionic CLI's start
command will prompt you to pick a starting template, and scaffold out the project for you.
ionic serve
Your default browser should start up and display a working Ionic app.
npm install @angular/fire firebase --save
Now that you have a new project setup, install AngularFire and Firebase from npm.
Let's create a new file, src/environment.ts
and start adding our Firebase config:
export const firebaseConfig = {
apiKey: '<your-key>',
authDomain: '<your-project-authdomain>',
databaseURL: '<your-database-URL>',
projectId: '<your-project-id>',
storageBucket: '<your-storage-bucket>',
messagingSenderId: '<your-messaging-sender-id>'
};
Open /src/app/app.module.ts
, inject the Firebase providers, and specify your Firebase configuration. This can be found in your project at the Firebase Console:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { AngularFireModule } from '@angular/fire';
import { firebaseConfig } from '../environment';
@NgModule({
declarations: [ MyApp ],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
AngularFireModule.initializeApp(firebaseConfig)
],
bootstrap: [IonicApp],
})
export class AppModule {}
There will be more or less imports depending on your app. This is just an example setup.
You can optionally provide a custom FirebaseApp name with initializeApp
.
@NgModule({
declarations: [ MyApp ],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
AngularFireModule.initializeApp(firebaseConfig, 'my-app-name')
],
bootstrap: [IonicApp],
})
export class AppModule {}
If your application was using both Firebase Auth and the Realtime Database you would add the following modules.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { AngularFireModule } from '@angular/fire';
import { firebaseConfig } from '../environment';
import { AngularFireDatabaseModule } from '@angular/fire/database';
import { AngularFireAuthModule } from '@angular/fire/auth';
@NgModule({
declarations: [ MyApp ],
imports: [
BrowserModule,
// imports firebase/app needed for everything
AngularFireModule.initializeApp(firebaseConfig),
// imports firebase/database, only needed for database features
AngularFireDatabaseModule,
// imports firebase/auth, only needed for auth features
AngularFireAuthModule,
IonicModule.forRoot(MyApp),
],
bootstrap: [IonicApp],
})
Open /src/pages/home/home.ts
, and start to import AngularFireDatabase
.
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AngularFireDatabase } from '@angular/fire/database';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
items: Observable<any[]>;
constructor(
public db: AngularFireDatabase,
public navCtrl: NavController,
) {}
}
In /src/pages/home/home.ts
:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AngularFireDatabase } from '@angular/fire/database';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'page-home',
templateUrl: `{%raw%}
<ion-header>
---
</ion-header>
<ion-content padding>
<ion-item *ngFor="let item of items | async">
{{item | json}}
</ion-item>
</ion-content>{%endraw%}`
})
export class HomePage {
items: Observable<any[]>;
constructor(
public db: AngularFireDatabase,
public navCtrl: NavController,
) {
this.items = db.list('list').valueChanges();
}
}