Angular Ngrx在状态更改时刷新组件

时间:2019-01-17 11:55:26

标签: javascript angular typescript ngrx

我有一个使用ngrx来管理状态的Angular应用程序。在应用程序页脚中,我有一个语言切换器,它使用基本的解析器将所选语言值存储在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);
  }
}

我可以很好地填充数据对象,但是如果我在页脚中切换语言,则会重置数据对象。我不知道为什么要这么做,只有有时候。有人知道发生了什么吗?

0 个答案:

没有答案