NgRx8: runtimeChecks вызывает раннее срабатывание свойств - PullRequest
1 голос
/ 30 октября 2019

Я добавил проверки неизменяемости в редуктор, просто активировав одну из них:

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 ». Консоль показывает это:

enter image description here

Достаточно интересно, что я не нашел много подсказок относительно проверок неизменности. Что-то не так в коде или я просто теряю безопасность хуков жизненного цикла компонента?

...