@@ -86,32 +86,39 @@ import 'rxjs/add/operator/switchMap';
8686@Component ({
8787 selector: ' app-root' ,
8888 template: `
89- <ul>
90- <li *ngFor="let item of items | async">
91- {{ item.text }}
92- </li>
93- </ul>
89+ <h1>Firebase widgets!</h1>
90+ <div *ngIf="items$ | async; let items; else loading">
91+ <ul>
92+ <li *ngFor="let item of items">
93+ {{ item.payload.val().text }}
94+ <code>{{ item.payload.key }}</code>
95+ </li>
96+ </ul>
97+ <div *ngIf="items.length === 0">No results, try clearing filters</div>
98+ </div>
99+ <ng-template #loading>Loading…</ng-template>
94100 <div>
95101 <h4>Filter by size</h4>
96102 <button (click)="filterBy('small')">Small</button>
97103 <button (click)="filterBy('medium')">Medium</button>
98104 <button (click)="filterBy('large')">Large</button>
105+ <button (click)="filterBy('x-large')">Extra Large</button>
99106 <button (click)="filterBy(null)" *ngIf="this.size$.getValue()">
100107 <em>clear filter</em>
101108 </button>
102109 </div>
103110 ` ,
104111})
105112export class AppComponent {
106- items: Observable <AngularFireAction <firebase .database .DataSnapshot >[]>;
113+ items$ : Observable <AngularFireAction <firebase .database .DataSnapshot >[]>;
107114 size$: BehaviorSubject <string | null >;
108115
109116 constructor (db : AngularFireDatabase ) {
110117 this .size$ = new BehaviorSubject (null );
111- this .items = this .size$ .switchMap (size =>
118+ this .items$ = this .size$ .switchMap (size =>
112119 db .list (' /items' , ref =>
113120 size ? ref .orderByChild (' size' ).equalTo (size ) : ref
114- ).valueChanges ();
121+ ).snapshotChanges ();
115122 );
116123 }
117124 filterBy(size : string | null ) {
0 commit comments