@@ -81,21 +81,30 @@ size$.next('small');
8181
8282``` ts
8383import { Component } from ' @angular/core' ;
84- import { AngularFirestore , AngularFirestoreCollection } from ' angularfire2/firestore' ;
84+ import { AngularFirestore } from ' angularfire2/firestore' ;
8585import { Observable } from ' rxjs/Observable' ;
8686import { BehaviorSubject } from ' rxjs/BehaviorSubject' ;
87- import { Subscription } from ' rxjs/Subscription' ;
8887import ' rxjs/add/operator/switchMap' ;
8988import ' rxjs/add/observable/combineLatest' ;
9089
90+ export interface Item {
91+ text: string ;
92+ color: string ;
93+ size: string ;
94+ }
95+
9196@Component ({
9297 selector: ' app-root' ,
9398 template: `
94- <ul>
95- <li *ngFor="let item of items | async">
96- {{ item.text }}
97- </li>
98- </ul>
99+ <div *ngIf="items$ | async; let items; else loading">
100+ <ul>
101+ <li *ngFor="let item of items">
102+ {{ item.text }}
103+ </li>
104+ </ul>
105+ <div *ngIf="items.length === 0">No results, try clearing filters</div>
106+ </div>
107+ <ng-template #loading>Loading…</ng-template>
99108 <div>
100109 <h4>Filter by size</h4>
101110 <button (click)="filterBySize('small')">Small</button>
@@ -117,15 +126,14 @@ import 'rxjs/add/observable/combineLatest';
117126 ` ,
118127})
119128export class AppComponent {
120- items: Observable <AngularFireAction < firebase . firestore . DataSnapshot > []>;
129+ items$ : Observable <Item []>;
121130 sizeFilter$: BehaviorSubject <string | null >;
122131 colorFilter$: BehaviorSubject <string | null >;
123- filter$: Observable <[string , string ]>;
124132
125133 constructor (afs : AngularFirestore ) {
126134 this .sizeFilter$ = new BehaviorSubject (null );
127135 this .colorFilter$ = new BehaviorSubject (null );
128- this .items = Observable .combineLatest (
136+ this .items$ = Observable .combineLatest (
129137 this .sizeFilter$ ,
130138 this .colorFilter$
131139 ).switchMap (([size , color ]) =>
0 commit comments