Angular 8 - проблема с трубопроводом при работе с http, возвращаемая наблюдаемой - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь сделать пару вещей с помощью http-запроса, используемого для авторизации учетных данных для входа.

Сначала я пытаюсь использовать navigateByUrl ('/'), чтобы перенаправить пользователя обратно на домашнюю страницу. после успешного входа / регистрации.

Во-вторых, я хочу передать полученные от сервера ошибки в ранее установленный пустой список ошибок.

submitForm() {
     this.isSubmitting = true;
     this.errors = new Errors();

     let credentials = this.authForm.value;
     this.userService.attemptAuth(this.authType, credentials)
       .subscribe(
         data => this.router.navigateByUrl('/'),
         err => {
           this.errors = err;
           this.isSubmitting = false;
       }
     );
   }

Я думаю, что яне должно включать обе мои функции стрелок в методе subscribe (). Должен ли я вместо этого использовать обе эти функции? У меня есть хорошая идея о том, как использовать catchError () в вызове pipe (), но немного неясно, как выполнить перенаправление url в pipe ().

Любой совет будет высоко ценится,спасибо!

1 Ответ

0 голосов
/ 15 октября 2019

Попытка ответить на ваш оригинальный вопрос: Если вы хотите перемещаться по трубе, вы можете сделать что-то вроде этого:

submitForm() {
    this.isSubmitting = true;
    this.errors = new Errors();

    let credentials = this.authForm.value;
    this.userService.attemptAuth(this.authType, credentials)
        .pipe(
            tap(() => this.router.navigateByUrl('/'))
        )
        .subscribe(
            (data) => {
                this.isSubmitting = false;
            },
            (error) => {
                this.errors = error;
                this.isSubmitting = false;
            }
        );
}

Я бы не одобрил это, потому что это просто добавляет большенакладные расходы на что-то, что вы уже можете сделать в подписке ();

...