0

成功登录后,将导航到仪表板 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 在我们进行强制重定向而不是角度路由器导航之后才起作用。如何解决?

4

2 回答 2

0

将导航 URL 置于 if 条件或 else 条件中。或者另一个问题是你的菜单组件没有得到哪个用户登录,所以你应该尝试在用户登录时发出事件并订阅菜单组件并设置与登录用户相关的条件。

于 2020-02-25T02:57:38.223 回答
0

修复了以下更改的问题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-menuapp-footer一个*ngIf检查是否不是登录url。我们需要app-menu在这两种情况下添加容器,app.component.html然后只有它才能工作,即使它隐藏在里面app-menu。早些时候,它<router-outlet>仅适用于 a 中的登录路由app.component.html

于 2020-02-25T16:55:56.773 回答