Angular ngrx обновляет компонент при изменении состояния - PullRequest
0 голосов
/ 17 января 2019

У меня есть приложение Angular, использующее ngrx для управления состоянием. В нижнем колонтитуле приложения есть переключатель языка, который использует базовый преобразователь для сохранения значения выбранного языка в localStorage:

export function locale(state, action) {
  switch (action.type) {
    case 'SET_LOCALE':
      localStorage.setItem('xyz-locale', action.payload);
      return action.payload;
    default:
      return localStorage.getItem('xyz-locale') || 'en';
  }
};

Приложение использует локаль, сохраненную в localStorage, для выбора правильных переводов для приложения, переводы также сохраняются в состоянии приложения с помощью ngrx (но не сохраняются в localStorage, это просто делается на лету).

Компоненты (использующие модуль нижнего колонтитула в качестве дочернего компонента) затем подписываются на переводы, и они используются в компоненте.

Проблема в том, что когда я переключаю язык, это приводит к сбросу некоторых членов класса компонента. Это происходит только при некоторых обстоятельствах, и я изо всех сил пытаюсь найти причину. Так, например, если у меня есть такой компонент:

export class SomeComponent {
  public i18n: I18n;
  public data: Data;

  constructor(private store: Store<any>) {
    store.select('i18n').subscribe((i18n) => this.i18n = i18n);
  }
}

Я могу заполнить объект данных нормально, но если я переключу язык в нижнем колонтитуле, объект данных будет сброшен. Я понятия не имею, почему он это делает, и только иногда. Кто-нибудь знает, что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...