我有一个使用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);
}
}
我可以很好地填充数据对象,但是如果我在页脚中切换语言,则会重置数据对象。我不知道为什么要这么做,只有有时候。有人知道发生了什么吗?