diff --git a/src/lib/services/entities-map.service.ts b/src/lib/services/entities-map.service.ts index 27790da..bee6608 100644 --- a/src/lib/services/entities-map.service.ts +++ b/src/lib/services/entities-map.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; -import { filter, startWith } from 'rxjs/operators'; +import { BehaviorSubject, Observable, Subject, switchMap } from 'rxjs'; +import { filter, map, startWith } from 'rxjs/operators'; import { Entity } from '../listing'; import { RequiredParam, shareLast, Validate } from '../utils'; import { Id } from '../listing/models/trackable'; @@ -11,6 +11,7 @@ export abstract class EntitiesMapService>(); readonly #entityChanged$ = new Subject(); + readonly #entitiesChanged$ = new BehaviorSubject(false); readonly #entityDeleted$ = new Subject(); get empty(): boolean { @@ -68,6 +69,10 @@ export abstract class EntitiesMapService { + return this.#entityChanged$.pipe( + startWith(this.get(key)), + map(entities => entities as Class[]), + map(entities => !!entities.length) + ); + } + watchDeleted$(entityId: Id): Observable { return this.#entityDeleted$.pipe(filter(entity => entity.id === entityId)); }