Хранение Ngrx: выполнение обработчика выбора для конкретного изменения среза с дополнительными данными - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть состояние магазина как:

export interface DocumentState {
  document: Document;
  selectedPage: number;
}

Я хочу позвонить DoSomethingOnlyOnDocumentChange(doc: Document) и DoSomethingOnlyOnPageChange(Document: doc, page: number).Идея не в том, чтобы выполнять обработчики при изменении состояния другого.Я подписался на изменения состояния следующим образом:

this.store$.select(appState => appState.documentState.document).subscribe(this.DoSomethingOnlyOnDocumentChange);
this.store$.select(appState => appState.documentState.selectedPage).subscribe(this.DoSomethingOnlyOnPageChange);

Как получить доступ к документу в обработчике состояния изменения страницы?

1 Ответ

0 голосов
/ 08 апреля 2019

Это причина, по которой ngrx selectors существует.

Сначала создайте селектор для необходимого слоя состояния:

export const selectDocument = createFeatureSelector<AppState, 
  DocumentState>('document');

export const getDocument = createSelector(
  selectDocument,
  (state: DocumentState) => state.document
);

Затем используйте его в своем компоненте:

this.store$.select(getDocument).subscribe(this.DoSomethingOnlyOnDocumentChange);

Таким образом, только изменения, внесенные в срез документа, будут обрабатываться DoSomethingOnlyOnDocumentChange

Ссылка: Документация ngrx

...