Routerlinkactive在Angular 8中的页面加载时不适用于动态生成的路由

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Routerlinkactive在Angular 8中的页面加载时不适用于动态生成的路由相关的知识,希望对你有一定的参考价值。

我有一个使用Angular 8构建的应用程序。Routerlinkactive最初并未在动态生成的路线上激活,但是当我单击同一模块中的其他链接并返回时,它就可以工作。routerLinkActive设置在UserComponent中,当基于url params加载子项(UserProfileComponent)时,它应激活导航中的锚点。

enter image description here

例如,我尝试了许多解决方案,例如使用模板变量

[routerLinkActive]="['']" [ngClass]="rla.isActive ? 'mat-accent' : 'mat-primary'" #rla="routerLinkActive"或应用[routerLinkActiveOptions]="exact:true",但没有一个有用。

这是我的html代码的最新版本。

<ul role="list"  class="list-horizontal">
  <li>
    <a class="mat-primary"
      routerLinkActive="mat-accent"
      [routerLink]="'/user/profile/' + profile?._id"
      mat-raised-button>Profile </a>
  </li>
  <li>
    <a class="mat-primary"
      [routerLink]="'/user/posts/'"
      [routerLinkActive]="['mat-accent']"
      mat-raised-button>Posts</a>
  </li>
  <li>
    <a class="mat-primary"
      [routerLink]="'/user/favorite-posts/'"
      [routerLinkActive]="['mat-accent']"
      mat-raised-button>Favourites</a>
  </li>
</ul>

我猜问题出在动态生成的路由(基于用户ID)中,

例如http://my-domain/user/profile/5dd58c41409cccea2c9296f3,因为当我直接访问其他组件时,例如http://my-domain/user/posts,则routerLinkActive可以将active类设置为相应的链接。这就是我为当前模块配置路由的方式。

const routes: Routes = [
    path: '',
    component: UserComponent,
    children: [
      
        path: 'profile/:id',
        component: UserProfileComponent
      ,
      
        path: 'posts',
        component: UserPostsComponent
      ,
      
        path: 'favorite-posts',
        component: UserFavoritePostsComponent
      
    ]
];

任何提示都值得赞赏。谢谢!

我有一个使用Angular 8构建的应用程序。Routerlinkactive在开始时并未在动态生成的路由上激活,但是当我单击同一模块中的其他链接并返回时......>

答案
我发现了另一种解决此问题的方法,因为我无法显示带有动态生成的参数的活动路由。因此,我在发布我的答案,以便对他人有所帮助。

我决定在所选元素上设置mat-accent(活动)类,并从同级元素中删除该类。这个技巧是在ngClass指令的帮助下完成的。

以上是关于Routerlinkactive在Angular 8中的页面加载时不适用于动态生成的路由的主要内容,如果未能解决你的问题,请参考以下文章

Routerlinkactive在Angular 8中的页面加载时不适用于动态生成的路由

[入门级]angular学习笔记06

Angular2在路由不活动时添加类

是否可以用 routerLinkActive 替换一个类,而不仅仅是添加一个类?

在 Angular 2 中,如何使用父路由确定子路由中的活动路由?

如何使用 RouterLink 为模块配置故事书故事