Angular 2 использует routerLinkActive с аргументами на основе пути в URL - PullRequest
0 голосов
/ 10 октября 2019

Мое приложение имеет 2 маршрута, панель мониторинга и страницу сведений с идентификатором в качестве части URL-адреса.

RouterModule.forRoot([
  { path: '', component: DashboardComponent },
  { path: 'documents/:documentUUID', component: DocumentDetailComponent },
])

Для моей навигационной панели у меня есть 2 ссылки: Dashboard и Training. Когда я нахожусь на странице сведений (например, / documents / 01e328b8-822d-46d8-8229-78f4afb2e372 /), ссылка Training должна быть выделена. Однако нажатие на Training никогда не должно ничего делать.

Это то, что у меня есть в настоящее время, это правильно подсвечивает ссылку Training на основе URL. Однако нажатие на Training вызывает ошибку Cannot match any routes. URL Segment: 'documents' в консоли.

<nav>
    <a routerLink="/" [routerLinkActive]="'is-current'" [routerLinkActiveOptions]="{exact: true}">Dashboard</a>
    <a routerLink="/documents/" [routerLinkActive]="'is-current'" [routerLinkActiveOptions]="{exact: false}">Training</a>
</nav>

Как мне добиться того, что я хочу сделать, не добавляя ссылку href / routerLink к ссылке Training?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Завершено получение текущего URL из router.url и использование [ngClass] вместо [routerLinkActive]. Не мое идеальное решение, но оно работает и может иметь больше смысла.

<a [ngClass]="{'is-current': router.url.startsWith('/documents/')}">Training</a>
0 голосов
/ 10 октября 2019

Потому что во второй ссылке вы не передали и идентификатор документа, поэтому может выдать ошибку об этом.

Сконфигурировать для игнорирования той же навигации по URL-адресу.

Angular- Перейдите к текущему тому же URL с перезагрузкой компонента, а не всей страницы

Проверьте вышеуказанную ссылку

...