Обработка наблюдаемых ошибок не обновляет представление в Angular8 - PullRequest
0 голосов
/ 22 января 2020

Я недавно обновил веб-приложение до angular 8, и все хорошо, за исключением странной ситуации. Я имею дело с Fingerprint2 и Angular8

Это приложение использует FingerPrint2.getV18 () для пометки уникального сессия при входе в систему. Мой шаблон разрешает и достигает компонента, однако в angular 7 представление будет обновляться при обработке ошибок. В настоящее время с angular 8 мне нужно обновить представление с помощью:

this.changeDetectorRef.detectChanges();

Как кто-либо из тел испытывал это в последнее время? Я немного изящный фанат кода, поэтому, если кто-то может мне помочь, это было бы замечательно.

Моя последовательность входа выглядит так на стороне службы:

login(email: string, password: string): Observable<AuthSession> {
        return new Observable((observer: Observer<AuthSession>) => {

            Fingerprint2.getV18({}, (fingerPrintResult: string) => {

                const loginData: any = {
                    email: email,
                    password: password,
                    device: {
                        id: fingerPrintResult,
                        type: 'WEB',
                        model: navigator.userAgent
                    }
                };

                this.http.post<AuthSession>(`${this.environmentService.apiUrl}/v1/customer/login`, loginData)
                    .subscribe((authSession: AuthSession) => {
                        observer.next(authSession);
                        observer.complete();
                    }, (error: HttpErrorResponse) => {
                        observer.error(error);
                        observer.complete();
                    });
            });
        });
    }

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

this.authService.login(formData.email.toLowerCase(), formData.password)
            .pipe(
                finalize(() => {
                    this.isLoginSubmitting = false;
                    //HERE ITS NOT UPDATING THE VIEW
                    //this.changeDetectorRef.detectChanges();
                }),
            )
            .subscribe((session: AuthSession) => {
                this.doLoginSuccess(session);
            }, (errorResponse: HttpErrorResponse) => {
                console.log('error at login attempt!');
                this.errorMessage = errorResponse.error.errorDescription;
                //HERE ITS NOT UPDATING THE VIEW
                //this.changeDetectorRef.detectChanges();

            });

Кажется таким тривиальным ... Я что-то здесь не так делаю?

Спасибо

...