@@ -86,32 +86,39 @@ import 'rxjs/add/operator/switchMap';
86
86
@Component ({
87
87
selector: ' app-root' ,
88
88
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>
94
100
<div>
95
101
<h4>Filter by size</h4>
96
102
<button (click)="filterBy('small')">Small</button>
97
103
<button (click)="filterBy('medium')">Medium</button>
98
104
<button (click)="filterBy('large')">Large</button>
105
+ <button (click)="filterBy('x-large')">Extra Large</button>
99
106
<button (click)="filterBy(null)" *ngIf="this.size$.getValue()">
100
107
<em>clear filter</em>
101
108
</button>
102
109
</div>
103
110
` ,
104
111
})
105
112
export class AppComponent {
106
- items: Observable <AngularFireAction <firebase .database .DataSnapshot >[]>;
113
+ items$ : Observable <AngularFireAction <firebase .database .DataSnapshot >[]>;
107
114
size$: BehaviorSubject <string | null >;
108
115
109
116
constructor (db : AngularFireDatabase ) {
110
117
this .size$ = new BehaviorSubject (null );
111
- this .items = this .size$ .switchMap (size =>
118
+ this .items$ = this .size$ .switchMap (size =>
112
119
db .list (' /items' , ref =>
113
120
size ? ref .orderByChild (' size' ).equalTo (size ) : ref
114
- ).valueChanges ();
121
+ ).snapshotChanges ();
115
122
);
116
123
}
117
124
filterBy(size : string | null ) {
0 commit comments