Я обыскал количество постов, но не нашел решения, применимого к моему сценарию. Я пополняю кендо-меню динамически, используя сборку массива через sql.
<kendo-menu [items]="items"
[vertical]="true"
style="display:inline-block;">
</kendo-menu>
Это пример, который я следую:
https://www.telerik.com/kendo-angular-ui/components/menus/menu/vertical/
Вот как структурируется массив items:
export const items: any[] = [
{
text: 'Reportingd',
items: [{ text: 'Dash', url: "https://www.google.com" }, {
text: 'Realtime',
items: [{ text: 'DesktopNew', url: "https://www.telerik.com" }, { text: 'laptop', url: "https://www.msn.com" }]
}]
},
{
text: 'Other Reporting',
items: [{ text: 'Training', url: "https://www.msn.com" }, { text: 'UserManual', url: "https://www.msn.com" }, { text: 'Guide',
items: }]
},
{
text: 'Tools',
items:[{ text: 'Training', url: "https://www.msn.com" }]
}];
Тем не менее, это при нажатии меню / подменю открывает URL в том же окне. Я хочу открыть в другом окне или новой вкладке. HTML <a>
тег здесь не работает. Пожалуйста, предложите
<a href="https://www.thesitewizard.com/" target="_blank">thesitewizard.com</a>
2 ответа
Напишите событие выбора для меню кендо, как показано ниже.
<kendo-menu [items]="items" (select)="onSelect($event)"></kendo-menu>
После этого в методе onSelect используйте метод window.open, как показано ниже.
public onSelect({ item }): void {
if (!item.items) {
window.open([item.url], "_blank");
}
}
Удалось решить. Это двухэтапный процесс, хотя. со следующей структурой массива, указанной в исходном посте, просто откройте в текущем окне. Поэтому при первоначальной загрузке извлекается уникальный идентификатор MenuID вместо URL. Тогда, как предложил ManirajSS
public onSelect({ item }): void {
//call service to get url for this MenuID
}
Похожие вопросы
Новые вопросы
angular
Вопросы по Angular (не путать с AngularJS), веб-фреймворку от Google. Используйте этот тег для угловых вопросов, которые не относятся к конкретной версии. Для более старой веб-платформы AngularJS (1.x) используйте тег angularjs.