Я добавил проверки неизменяемости в редуктор, просто активировав одну из них:
StoreModule.forRoot(reducers, {
runtimeChecks: {
strictStateImmutability: true,
// strictActionImmutability: true,
// strictStateSerializability: true --> Sucks, f.e. can't serialize objects
// strictActionSerializability: true, --> Sucks too
},
}),
Ничего особенного здесь нет, но, похоже, как только для любого из runtimeChecks установлено значение true, хранилищеперехватывает ЛЮБЫЕ свойства, а не только те, которые находятся в состоянии.
Например, у меня есть небольшой компонент входа:
public formGroup: FormGroup;
public isLoggingIn = false;
public constructor(
private formGroupBinder: RxFormGroupBindingService,
private formBuilder: LogInFormBuilderService,
private store: Store<IAppState>) { }
public ngOnInit(): void {
console.log('ngOnInit');
this.formGroup = this.formBuilder.buildFormGroup();
}
public logIn(): void {
this.isLoggingIn = true;
const request = new LoginRequest();
this.formGroupBinder.bindToModel(this.formGroup, request);
this.store.dispatch(new LogInAction(request));
}
public get canLogIn(): boolean {
console.log('canLogIn: ' + !!this.formGroup);
return !this.formGroup.invalid && !this.isLoggingIn;
}
Как только строгая проверка магазина активирована, "canLogin"«свойство вызывается перед ngOnInit, вызывая ошибку« formgroup is undefined ». Консоль показывает это:
Достаточно интересно, что я не нашел много подсказок относительно проверок неизменности. Что-то не так в коде или я просто теряю безопасность хуков жизненного цикла компонента?