CoreModule - это загруженный модуль, содержащий состояние, необходимое для запуска приложения.
import * as fromCore from './state/core.reducer';
@NgModule({
...
imports: [
StoreModule.forRoot({ core: fromCore.reducer }),
DocumentModule - это модуль с отложенной загрузкой.
import * as fromDocument from './state/document.reducer';
@NgModule({
...
imports: [
StoreModule.forFeature('document', fromDocument.reducer),
DocumentComponent внедряет хранилище.
import * as fromDocument from './state/document.reducer';
constructor(private store: Store<fromDocument.State>) { }
fromDocument.State расширяет состояние 'core'.
import * as fromCore from '../../core/state/core.reducer';
export interface State extends fromCore.State {
document: DocumentState;
}
Этот подход, который я вижу, используется повсеместно, но я не вижу в этом никакой пользы. Когда я настроил его так, чтобы fromDocument.State не выходил изCore.State, я все равно мог получить доступ к «основной» части дерева состояний в DocumentComponent.
this.user$ = this.store.select(fromCore.getUser);
Путем внедрения хранилища в компонент I всегда иметь доступ к полному дереву состояний, независимо от того, как я печатаю хранилище. Так, какова цель строгой типизации магазина? Почему бы просто не использовать Store везде? Единственный способ, которым я взаимодействую с объектом store, - это store.select и store.dispatch, поэтому, насколько я вижу, преимущества при наборе текста нет?