Как отловить ошибку от userService и отправить обратно компоненту входа? - PullRequest
0 голосов
/ 17 апреля 2020

Я отправляю ошибку ниже, когда model state is invalid.

 if (!ModelState.IsValid)
      {
          return BadRequest(ModelState);
      }

Это показывает ошибку от console, но я хочу перехватить и сохранить где-нибудь вместо того, чтобы показывать ошибку на консоли, как это. Я хочу показать сообщение с этим this.authNoticeService.setNotice(this.translate.instant('AUTH.VALIDATION.INVALID_LOGIN'), 'danger');. Это совсем не похоже на этот метод, а просто на sh. Сообщение об ошибке с сервера

компонент входа

this.auth
            .login(authData.username, authData.password)
            .pipe(
                tap(user => {
                    debugger;
                    if (user && user.auth_token) { 
                        localStorage.setItem('auth_token', user.auth_token); 
                        this.store.dispatch(new Login({authToken: user.auth_token}));
                        this.router.navigateByUrl(this.returnUrl); // Main page
                    } else {
                        debugger;
                        this.authNoticeService.setNotice(this.translate.instant('AUTH.VALIDATION.INVALID_LOGIN'), 'danger');
                    }
                }), 
                takeUntil(this.unsubscribe),
                finalize(() => {
                    this.loading = false;
                    this.cdr.markForCheck();
                })
            )
            .subscribe();
    }

служба авторизации

public  login(username: string, password: string): Observable<any> {
        //return this.http.post<User>("http://localhost:4200/api/auth/login", { username, password });

        return this.http.post<any>(
            "api/auth/login",
            JSON.stringify({ username, password }),
            httpOptions
        );

    }
    private handleError<T>(operation = "operation", result?: any) {
        return (error: any): Observable<any> => {
            // TODO: send the error to remote logging infrastructure
            console.error(error); // log to console instead

            // Let the app keep running by returning an empty result.
            return of(result);
        };
    }

...