【发布时间】:2020-08-09 04:04:21
【问题描述】:
我在这里想的是 observables ..
我想象过以下几种情况:
示例 1)
在我使用 NGRX 的情况下,我正确地创建了所有架构,并为该特定商店创建了选择器服务。
在服务中无法使用 ngOnDestroy,因为它不是组件,我有以下问题,服务中是否存在内存泄漏?还是这个服务会自动销毁 observables?
示例 2) 使用示例一中的选择器,是否需要订阅这个选择器然后销毁它?
PEOPLE-SELECTORS.SERVICE
@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>
【问题讨论】:
标签: angular rxjs ngrx rxjs-observables