Можно ли установить ошибки FormControl в FormGroup с ограниченным состоянием с помощью @ngxs/form-plugin?

Я добавляю NGXS в приложение, и мне интересно, возможно ли обновить ошибки набора для определенного FormControl.

Вот как выглядел мой компонент до NGXS:

@Component({
selector: 'app-login-page',
templateUrl: './login-page.component.html',
styleUrls: ['./login-page.component.scss']
})
export class LoginPageComponent

    public loginForm: FormGroup;

    /*Other stuff...*/

    public login(): void {

        this.authenticationService.login(this.loginForm.get('emailAddress').value, this.loginForm.get('password').value)
            .subscribe(
                 response => {
                     this.router.navigate([this.returnUrl]);
                 },
                 error => {
                     this.loginForm.get('password').setErrors({incorrect: true}) //<-- Set error in form
                 });
     }
 }

Затем я могу проверить наличие ошибок, используя:

if (this.loginForm.controls['password'].errors.incorrect) {
    //Do something....
}

После того, как я добавил NGXS, я заменил первый фрагмент следующим:

@Action(AuthenticationFailure)
authenticationFailure(context: StateContext<IAuthenticationState>, action: AuthenticationFailure) {

    let state: IAuthenticationState = context.getState();

    //Setting error does not work this way
    context.setState({
        ...state,
        loginForm: {
            ...state.loginForm,
            errors: {
                ...state.loginForm.errors,
                password: {incorrect: true}
            }
        }
    })
}

Я ожидал, что это обновит ошибки в loginForm в моем компоненте, но это не так. Можно ли сделать это как-то иначе?

0 ответов

Другие вопросы по тегам