Angular 8 Roulerlink работает только после перезагрузки страницы - PullRequest
0 голосов
/ 24 февраля 2020

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

навигация для входа в систему, которая работает в данный момент

    this.usermanagementService.login('login', {username: userName, password})
    .subscribe(message => {
        this.jwt.saveToken(message.data.token);      

        if (window.localStorage.getItem('locale') === null) {
          window.localStorage.setItem('locale', 'en');
        }
        this.router.navigate(['/dashboard']);
// More lines which handles the error section

Меню приложения html

 <div *ngIf="m.submenus?.length > 0" class="collapse" id="{{ m.name }}" aria-expanded="false">
             <ul class="flex-column pl-2 nav submenu-dark">
                <li *ngFor="let secondlevel of m.submenus" class="nav-item">
                   <a class="nav-link collapsed text-truncate" routerLink="{{ secondlevel.slug }}"><span>{{ secondlevel.name }}</span></a>

                </li>
             </ul>
      </div>

В настоящее время routerlink работает после принудительного перенаправления вместо angular роутер навигация. как это исправить?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Исправлена ​​проблема со следующими изменениями в app.component

<app-header></app-header>
<div *ngIf="router.url !== '/login'; else loginTemplateName" id="wrapper" class="toggled container-margin-fix">
    <app-menu></app-menu>
    <router-outlet></router-outlet> 
    <app-footer></app-footer> 
</div> 
<ng-template #loginTemplateName>
    <app-menu></app-menu>
    <router-outlet></router-outlet> 
    <app-footer></app-footer> 
</ng-template>

Внутри app-menu и app-footer есть *ngIf проверка, не является ли это URL-адресом для входа. Нам нужно добавить контейнер app-menu в обоих случаях в app.component.html, тогда только он будет работать, даже если он скрыт внутри app-menu. Ранее это был просто <router-outlet> только для маршрута входа в систему в app.component.html

0 голосов
/ 25 февраля 2020

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

...