Неактивный родительский активный класс не работает
Я использую nebular с Angular 6, столкнувшись с проблемой при нажатии на элемент меню, активный класс на родительском элементе меню не добавлен. но если вы видите http://akveo.com/ngx-admin, когда вы нажимаете "кнопки" внутри "UI-функций", их UI-функции выделяются.
Ниже мой файл JSON:
[
{
"title": "Dashboards",
"icon": "font_icons8 icons8-statistics",
"link": "/dashboard",
"home": true
},
{
"title": "UI Features",
"icon": "font_icons8 icons8-data-configuration",
"link": "/ui-features",
"children": [
{
"title": "Typography",
"link": "/ui-features/typography"
},
{
"title": "Grid",
"link": "/ui-features/grid"
}
]
},
]
Пожалуйста, помогите мне избавиться от этой проблемы.
5 ответов
В свойстве ссылки каждого отдельного пункта меню я устанавливаю полный путь к нему. Раньше я устанавливал только /componentName вместо /fullpath/componentName
У меня была такая же проблема, я решил удалить "/" в конце ссылки в пункте меню.
Как это:
{
title: 'Dashboard',
icon: 'home-outline',
link: '/home/',
home: true,
},
Он не становится синим, я решил это:
{
title: 'Dashboard',
icon: 'home-outline',
link: '/home',
home: true,
},
Я знаю, что уже поздно, но, возможно, это может помочь кому-то еще. :)
Просто установите свойство pathMath родительского элемента со значением prefix и дайте ему ссылку. После этого установите свойство pathMath для детей с 'полным' значением.
Смотрите мои образцы работ:
{
title: 'Security',
icon: 'lock-outline',
link: '/security',
pathMatch: 'prefix',
children: [
{
title: 'User',
pathMatch: 'full',
link: '/security/user',
selected: false,
}]
}
Примечание: ваши маршруты должны быть установлены с точной ссылкой на ваш пункт меню, например:
{
path: 'security/user',
loadChildren: () =>
import('./pages/security/register-user/register-user.module').then(
(m) => m.RegisterUserModule,
),
},
Это работает, вы можете попробовать этот код.
{
title: "Dashboard",
icon: "people-outline",
link: "/dashboard"
},
{
title: "Calendar",
icon: "pie-chart-outline",
children: [
{
title: "Day-cell",
link: "/day-cell"
},
]
},
Из моих экспериментов и просмотра исходного кода Nebular я смог выяснить следующее:
- Свойство ссылки
NbMenuItem
должен иметь префикс/
. - Атрибут, который мы передаем в
<nb-menu>
элемент должен быть инициализирован с самого начала. Подробности: Существует частный методsetParent()
который устанавливает атрибут каждого дочернего элемента меню, и этот метод вызывается толькоngOnInit
изNbMenuComponent
. Таким образом, другое решение этой проблемы, если инициализация пунктов меню с самого начала невозможна, состоит в том, чтобы установитьparent
свойство каждого ребенка самостоятельно с помощью функции setParent.
частный setParent (элемент: NbMenuItem) { item.children && item.children.forEach(child => { дочерний.родительский = элемент; this.setParent (дочерний); }); }
Тогда позвони
setParent
на всех элементах
items
список т.е.
items.map(item => this.setParent(item))