У меня есть сборка приложения с Angular 8. Routerlinkactive
не активируется на динамически сгенерированном маршруте в начале, но когда я нажимаю на некоторые другие ссылки в том же модуле и возвращаюсь, все работает. routerLinkActive
устанавливается в UserComponent
, и он должен активировать привязку в навигации, когда дочерний элемент (UserProfileComponent
) загружается на основе параметров URL.
Я пробовал много решений, таких как использование переменной шаблона, например
[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>
Я предполагаю, что проблема заключается в динамически сгенерированном маршруте (который основан на идентификаторе пользователя),
Например, 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
}
]
}];
Любая подсказка приветствуется. Спасибо!
userLink
примерно так:[routerLink]="['user', 'profile', profile._id"
- person akkonrad   schedule 09.12.2019