Я здесь думаю о наблюдаемых ..
И я представил себе следующие ситуации:
Пример 1) В моем случае, когда я использую NGRX
, я правильно создаю всю архитектуру и создаю службу выбора для этого конкретного магазина.
В службе невозможно использовать ngOnDestroy, потому что это не компонент, и у меня возникает следующий вопрос: есть ли утечка памяти в службе? Или этот сервис автоматически уничтожает наблюдаемые?
Пример 2) Используя селекторы в первом примере, нужно ли подписаться на этот селектор, а затем уничтожить его?
ПЕРСОНАЛИЗАЦИЯ.СЕРВИС
@Injectable({ providedIn: 'root' })
export class PeopleSelectorsService {
constructor(private readonly store: Store<StoreState>) {}
get error(): Observable<IRequestError> {
return this.store.pipe(select(fromPeopleSelectors.getError));
}
get loading(): Observable<boolean> {
return this.store.pipe(select(fromPeopleSelectors.getLoading));
}
get main(): Observable<IPeople> {
return this.store.pipe(select(fromPeopleSelectors.getMain));
}
get total(): Observable<number> {
return this.store.pipe(select(fromPeopleSelectors.selectTotal));
}
get all(): Observable<Array<IPeople>> {
return this.store.pipe(select(fromPeopleSelectors.selectAll));
}
get allIds(): Observable<Array<string | number>> {
return this.store.pipe(select(fromPeopleSelectors.selectIds));
}
}
APP.COMPONENT
ngOnInit(): void {
this.peopleDispatchService.getAll();
this.isLoading$ = this.peopleSelectorsService.loading;
}
<main [attr.isLoading]="isLoading$ | async">
<ng-container></ng-container>
<app-loading-container *ngIf="isLoading$ | async; else isMainController"></app-loading-container>
<ng-template #isMainController>
<app-user-talk-controller-container></app-user-talk-controller-container>
<app-user-talk-container></app-user-talk-container>
</ng-template>
</main>