Угловой роутер не активирует ngoninit

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

<mat-card>
  <mat-form-field class="full-width">
    <input matInput placeholder="Enter your Username" [(ngModel)]="username">
  </mat-form-field>

  <mat-form-field class="full-width">
    <input matInput placeholder="Enter Password" [(ngModel)]="password">
  </mat-form-field>

  <button mat-raised-button (click)="logIn()">Log In</button>
</mat-card>

Это код для компонента

@Hub({hubName: 'DALHub'})
export class LogInComponent implements OnInit {
  private hubWrapper: HubWrapper;
  username: String = '';
  password: String = '';

  constructor(private router: Router, private hub: HubService) {
    // This is signalr init process
    this.hubWrapper = this.hub.register(this);
    this.hub.connect({url: 'http://localhost:10476/signalr'});
  }

  ngOnInit() {
  }

  logIn() {
    this.hubWrapper.invoke('LogIn', this.username, this.password);
  }

  @HubSubscription()
  LogOK() {
    this.hubWrapper.unregister();
    this.router.navigate(['logged', this.username, this.password]);
  }
}

Как вы можете видеть, я использую сервер сигнализатора и пакет ngx-signalr для клиента.

когда пользователь нажимает кнопку "Войти", активируется функция входа в систему, которая вызывает сервер, чтобы проверить правильность имени пользователя и пароля. Если пароль и имя пользователя указаны правильно, сервер вызывает функцию LogOK на клиенте, которая предполагает перенаправить приложение на другой компонент.

Это конфигурация роутера

const routes: Routes = [
  {path: '', component: LogInComponent},
  {path: 'logged/:username/:password', component: UserComponent}
]; 

(Обратите внимание, что розетка маршрутизатора находится на html-странице приложения)

Это вид журнала когда я вхожу, я ожидаю получить следующую страницу Однако, когда я вхожу, я получаю следующую страницу Как вы можете видеть, страница входа все еще здесь, а страница пользователя выглядит странно, я проверил и увидел, что функция ngOnInit в UserComponent не была активирована, и я думаю, что это проблема. Вы знаете, как я могу это исправить?

2 ответа

Похоже, что маршрут маршрутизации неверен, поэтому измените маршрут в login component как это

const url = `${'logged/' + this.username + '/' + this.password}`;
this.router.navigate([url]);

Конфигурация маршрута

const routes: Routes = [
  {path: '', component: LogInComponent},
  {path: 'logged/:username/:password', component: UserComponent}
]; 

Маршрутная навигация / активация

this.router.navigate(['/logged', this.username, this.password]);

Похоже, вам не хватает косой черты? Обратите внимание на косую черту в начале пути.

Из документов:

При построении элемента кризисного центра вы перешли к маршруту детализации кризиса, используя абсолютный путь, начинающийся с косой черты.

Маршрутизатор сопоставляет такие абсолютные пути с маршрутами, начиная с верхней части конфигурации маршрута.

Кроме того, вы можете включить трассировку маршрута, чтобы лучше видеть, что может быть не так с вашими маршрутами:

RouterModule.forRoot([routes], { enableTracing: true })
Другие вопросы по тегам