ofActionSuccessful возвращает True, даже если в Angular NGXS есть ошибки - PullRequest
1 голос
/ 07 марта 2019

У меня проблема при попытке отредактировать пользователя. Я решил снова загрузить всех пользователей после успешного обновления. Однако, если есть ошибка, я не хочу, чтобы форма сбрасывалась и модал исчезал. Моя проблема, когда я пытаюсь обновить пользователя, и он возвращает ошибку. OfActionSuccessful по-прежнему срабатывает даже при возникновении ошибки. Пожалуйста, смотрите мой код ниже.

Component.ts

    onEditUser(form: FormGroup) {
        const formData = {
          id: form.value.id,
          name: form.value.name,
          email: form.value.email
        };
        console.log(formData);
        if (form.valid) {
          swal({
            title: 'Update',
            text: 'Are you sure you want to update changes?',
            type: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#0CC27E',
            cancelButtonColor: '#FF586B',
            confirmButtonText: 'Confirm',
            cancelButtonText: 'Cancel',
            confirmButtonClass: 'btn btn-success btn-raised mr-5',
            cancelButtonClass: 'btn btn-danger btn-raised',
            buttonsStyling: false
          }).then(result => {
            console.log(result);
            if (result.value) {
              this.store.dispatch(new UpdateUser(formData));
              this.actions$.pipe(ofActionSuccessful(UpdateUser)).subscribe(() =>
                form.reset(),
                this.modalReference.close()
              );
            }
          });
        }
      }

State.ts

@Action(UpdateUser)
      updateTodo({ getState }: StateContext<UserStateModel>, { payload }: UpdateUser) {
        return this.usersService.updateUser(payload).pipe(
          tap((result) => {
            console.log(result);
            const state = getState();
            this.store.dispatch(new GetUsers);
          }),
          catchError(err => {
            console.log(err);
            return throwError(err);
          })
        );
      }

1 Ответ

0 голосов
/ 08 марта 2019

Нет связи между нашим вызовом пользователя обновления и ofActionSuccessful. Вы всегда отправляете действие ActionSuccessful всякий раз, когда обещание swal разрешается. Возможно, вы пытались сделать следующее.

 if (form.valid) {
          swal({
            title: 'Update',
            text: 'Are you sure you want to update changes?',
            type: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#0CC27E',
            cancelButtonColor: '#FF586B',
            confirmButtonText: 'Confirm',
            cancelButtonText: 'Cancel',
            confirmButtonClass: 'btn btn-success btn-raised mr-5',
            cancelButtonClass: 'btn btn-danger btn-raised',
            buttonsStyling: false
          }).then(result => {
            console.log(result);
            if (result.value) {
              this.store.dispatch(new UpdateUser(formData))
      --->>>        .subscribe((sucess) => {
               this.actions$.pipe(ofActionSuccessful(UpdateUser)).subscribe(() =>
                form.reset(),
                this.modalReference.close()
              );
              });
            }
          });
}
...