Angular is on Fire(base)!
Shmuela Jacobs
Shmuela Jacobs
Front-end Developer & Consultant
Firebase
4
https://github.com/angular/angular-cli
Angular CLI
https://github.com/angular/angularfire2
AngularFire2
Angular & Firebase
Authentication
Real Time Database
Cloud Functions
Best Practices
NEW!
Project Setup
npm i angular-cli -g
ng new my-app --style=scss --prefix=sj
-it --routing
// .angular-cli.json
{...

"defaults": {

...

"inline": {

"style": false,

"template": true

}

}
}
Connecting to Firebase
npm i firebase angularfire2 -S
// firebase.config.ts
export const firebaseConfig = {

apiKey: "A-Long_api-key",

authDomain: "fir-xyz.firebaseapp.com",

databaseURL: "https://fir-xyz.firebaseio.com",

storageBucket: "fir-xyz.appspot.com",

};
// app.module.ts

import { AngularFireModule } from 'angularfire2';

import { firebaseConfig } from './firebase.config';

@NgModule({ ...
imports: [

AngularFireModule.initializeApp(firebaseConfig),

], ...
})
export class AppModule { }
Authentication
Email + Password
OAuth
Smart user management
Authentication
ng g s auth
// auth.service.ts
@Injectable()

export class AuthService {
login(username, password) {...}
login(provider)
logout() {...}

getUser() {...}
}
Authentication
ng g s auth
// auth.service.ts
@Injectable()

export class AuthService {
constructor(public af: AngularFire) {

this.af.auth.subscribe((authResponse: FirebaseAuthState) => {

if (authResponse) { ... } else { ... }

})

}
login(username, password) {...}
login(provider)
logout() {...}

getUser() {...}
}
Database
Real time
Read/write protection
Lists
Objects
Queries - observables!
Database - Read
ng g s data
// data.service.ts
@Injectable()

export class DataService {
constructor(private af: AngularFire) {

this.itemList = this.af.database.list('/list');

}
getItem(id) {

const itemObservable = this.af.database.object(`/items/${id}`);

itemObservable.subscribe(item => this.currentItem = item);

return itemObservable;

}
}
Database - Write
saveNewItem(item) {
return this.af.database.list(`/list`)

.push(item)

.then(savedItem => {

...

return savedItem;

})

.catch(error => console.error(error));

}



saveExistingItem (item, key) {

return this.af.database.object(`/list/${key}`)

.set(item)

.then(() => ... )

.catch(error => console.error(error));
}
Cloud Functions
Server side functions
DB Triggers
Manage storage
Google APIs
Notifications
// functions/index.js
const functions = require('firebase-functions');
// Import Admin SDK
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const db = admin.database();
exports.myFunction = functions.database.ref('/list/{id}')
.onWrite(event => {
... event.data.val() ...
... event.params.id ...
return db.ref('otherList').update(listItem);
})
Cloud Functions
npm i -g firebase-tools
firebase login
firebase init functions
More in Firebase
Storage
Notifications
Invites
Hosting
AdWords
Analytics
...and more!
Shmuela Jacobs
shmuela@ng-girls.org
github.com/shmool
@ShmuelaJ
ng-girls.org

Angular is one fire(base)! - Shmuela Jacobs