Enhancing your Facade
Encapsulate!
export class CustomerFacade extends CustomerFacadeBase {
constructor(store: Store<AppState>) {
super(Customer, store);
}
hasCustomer(id: number): Observable<boolean> {
return this.ids$.pipe(
map((ids: number[]) => ids.indexOf(id) > -1)
);
}
loadIfMissing(id: number): void {
this.hasCustomer(id)
.pipe(first())
.subscribe(exists =>
exists ? this.load(id) : false
);
}
save(customer: Customer): void {
if (updatedCustomer.id == null) {
this.customerFacade.create(customer); // Facades FTW!
} else {
this.customerFacade.update(customer); // Facades FTW!
}
}
}Last updated