У меня проблемы с навигацией в угловом приложении. Когда я нажимаю "Войти", он входит в систему, но не перенаправляет на страницу чата.

Это route.ts

import ...

export const appRoutes: Routes = [
  { path: 'signup', component: SignupFormComponent},
  { path: 'login', component: LoginFormComponent},
  { path: 'chat', component: ChatroomComponent},
  { path: '', redirectTo: '/login', pathMatch: 'full'},
];

Это app.module.ts

imports: [
RouterModule.forRoot(appRoutes),
],

И логин-form.ts

import { Component, OnInit } from '@angular/core';
import { AuthService } from '../services/auth.service';
import { Router } from '@angular/router';

@Component({
...
})
export class LoginFormComponent{
 email: string;
 password: string;
 errorMsg: string;

constructor(private authService: AuthService, private router: Router) { }

login() {
 this.authService.login(this.email, this.password)
 .then(resolve => this.router.navigate(['/chat']))
 .catch(error => this.errorMsg = error.message);
 }
}

Fist

When login

1
Tieu Duong Tu 11 Мар 2018 в 17:55
У вас есть ошибка в консоли браузера? если да, не могли бы вы также опубликовать это?
 – 
VithuBati
11 Мар 2018 в 17:57
Как выглядит ваш код authService для login? Возможно, он входит в систему, но не выполняет свое обещание?
 – 
prettyfly
11 Мар 2018 в 18:00
Это authService для входа в систему: логин (адрес электронной почты: строка, пароль: строка) {вернуть this.afAuth.auth.signInWithEmailAndPassword (адрес электронной почты, пароль) .then ((resolve) => {const status = 'online'; this.setUserStatus ( статус); this.router.navigate (['chat']);}); }
 – 
Tieu Duong Tu
11 Мар 2018 в 18:04
Консоль браузера также не вызывает ошибок, когда я нажимаю на вход в систему
 – 
Tieu Duong Tu
11 Мар 2018 в 18:07

1 ответ

Лучший ответ

Из вашего комментария:

login(email: string, password: string) { 
     return this.afAuth.auth.signInWithEmailAndPassword(email, password)
      .then((resolve) => { 
      const status = 'online'; this.setUserStatus(status); 
      this.router.navigate(['chat']); 
  }); 
}

Строка this.router.navigate(['chat']); потенциально блокирует выполнение обещания для входа в систему для ваших компонентов (поскольку router заблокирован неверным маршрутом).

Либо возьмите эту строку из функции authService и позвольте разрешению компонентов login работать с ней, либо не забудьте добавить косую черту перед chat в версии `authService.

 this.router.navigate(['/chat']); 
1
prettyfly 11 Мар 2018 в 18:10
Кроме того, const status = 'online'; this.setUserStatus(status); довольно избыточно, что не так с this.setUserStatus('online') .... использует на одно назначение меньше. Может быть мало, но эти штуки складываются :)
 – 
prettyfly
11 Мар 2018 в 18:13
Ага. Я установил .then ((resolve) => {this.router.navigate (['/ chat']); const status = 'online'; this.setUserStatus (status);}); Это сработало!!! Решил эту проблему, спасибо.
 – 
Tieu Duong Tu
11 Мар 2018 в 18:27