根据Kendo菜单中服务中的数据在新选项卡中打开url

时间:2019-05-30 00:33:47

标签: angular kendo-ui url-routing kendo-menu

我搜索了帖子的数量,但没有适用于我的方案的解决方案。我正在使用通过sql构建的数组动态填充kendo菜单。

<kendo-menu [items]="items"
            [vertical]="true"
            style="display:inline-block;">
</kendo-menu>

这是我关注的示例:

https://www.telerik.com/kendo-angular-ui/components/menus/menu/vertical/

这是项数组的结构方式:

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 个答案:

答案 0 :(得分:1)

为剑道菜单编写选择事件,如下所示。

<kendo-menu [items]="items" (select)="onSelect($event)"></kendo-menu>

之后,在onSelect方法中,使用如下所示的window.open方法。

public onSelect({ item }): void {
        if (!item.items) {
            window.open([item.url], "_blank");
        }
    }

答案 1 :(得分:0)

能够解决。虽然是两步过程。在初始窗口中给出的以下数组结构只是在当前窗口中打开。因此,在初始加载时获取了唯一的MenuID而不是url。然后按照ManirajSS的建议

public onSelect({ item }): void {

//call service to get url for this MenuID

}