Ситуация : у меня есть микро-интерфейс, созданный из основного приложения Angular, и множество библиотек Angular, импортированных как модули, содержащие компоненты, которые ведут себя как «подпрограммы».
Цель : я хочу поделиться хранилищем NGXS, созданным в главном приложении, между всеми подприложениями, чтобы каждое подприложение имело свой собственный фрагмент глобального состояния и могло иметь доступ к глобальному состояние также.
В приложении хоста я создаю состояние следующим образом:
@State<ApplicationStateModel>({
name: 'host',
defaults: {
context: {
language: 'en'
},
apps: {}
}
})
export class ApplicationState {...}
и в подпрограммах я хочу иметь возможность отправлять действия, а также вырезать это состояние, что-то вроде:
constructor(private store: Store) {
// slice the context
this.context$ = this.store.select(state => state.host.context);
// slice this sub-app state
this.state$ = this.store.select(state => state.host.apps['myapp']);
}
...
// dispatch an action
this.store.dispatch(new UpdateContext());
Проблема : как я могу передать хранилище из хост-приложения во вспомогательные приложения? Я предполагаю, что мог бы быть способ сделать это, используя функции .forRoot()
или .forFeature()
модуля во время импорта, но я полностью потерян.