Как использовать угловой модуль в другом модуле и сохранить его как свойство состояния второго модуля - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть угловое приложение, в котором у меня разные модули, и каждый модуль имеет свой собственный магазин в качестве функции. Допустим, есть модуль X, и я хочу использовать этот модуль в модуле Y, теперь у модуля Y есть несколько вкладок, на которых будет использоваться этот модуль X, поэтому в основном я хочу сохранить состояние модуля X как часть свойства Y каждой вкладки. Как мне этого добиться? Может быть, мой подход не верен, и я должен думать по-другому.

Ответы [ 2 ]

2 голосов
/ 05 ноября 2019

Когда вы определите свой модуль, у вас будет такой код:

export const MODULE_Z_REDUCER_TOKEN = new InjectionToken<ActionReducerMap<StateZ>>('Z_REDUCERS', { factory: () => reducers });

и

 StoreModule.forFeature('some_value_as_key_z', MODULE_Z_REDUCER_TOKEN , {}),

Результат будет в вашем магазине:

{
  some_value_as_key_z: {}
}

То, что я пытаюсь объяснить, это: магазин GLOBAL . Вы не можете создать магазин внутри магазина.

Итак, в общем, вам нужен магазин с:

{
  store_y:{
     tab1: {},
     tab2: {},
     tab3: {},
   }
}

Вы можете создать внутри своего магазина Y, состояние с tab1,tab2 и tab3. Нет необходимости в магазине в вашем модуле X.

0 голосов
/ 05 ноября 2019
const state = {
developers: [{
name: 'Bilal',
competency: ['ASP.NET', 'Angular']
}]
};
export const getAllDevelopers =
createSelector(getState,
(state): Developer[] => {
return state && state.developers;
}
);
this.store.select<Developer[]>(getAllDevelopers).subscribe(
developers => console.log(developers)
);
...