DevExtreme Angular - Overview
The Menu widget is a panel with clickable items. A click on an item opens a drop-down menu, which can contain several submenus.
The following code adds the Menu widget to your page. Note that the data source of the widget declares several nesting levels. First-level items produce items for the widget panel, or "root items". Other items go to drop-down menus.
jQuery
JavaScript
HTML
var menuItems = [{
name: 'Video Players',
items: [
{ name: 'HD Video Player', price: 220 },
{ name: 'SuperHD Video Player', price: 270 }
]
}, {
name: 'Televisions',
items: [
{ name: 'SuperLCD 42', price: 1200 },
{ name: 'SuperLED 42', price: 1450 },
{ name: 'SuperLED 50', price: 1600 }
]
}, {
name: 'Monitors',
items: [{
name: '19"',
items: [
{ name: 'DesktopLCD 19', price: 160 }
]
}, {
name: '21"',
items: [
{ name: 'DesktopLCD 21', price: 170 },
{ name: 'DesktopLED 21', price: 175 }
]
}]
}];
$(function() {
$("#menuContainer").dxMenu({
items: menuItems,
displayExpr: "name"
});
});<div id="menuContainer"></div>
Angular
HTML
TypeScript
<dx-menu
[items]="menuItems"
displayExpr="name">
</dx-menu>
import { DxMenuModule } from "devextreme-angular";
// ...
export class AppComponent {
menuItems = [{
name: 'Video Players',
items: [
{ name: 'HD Video Player', price: 220 },
{ name: 'SuperHD Video Player', price: 270 }
]
}, {
name: 'Televisions',
items: [
{ name: 'SuperLCD 42', price: 1200 },
{ name: 'SuperLED 42', price: 1450 },
{ name: 'SuperLED 50', price: 1600 }
]
}, {
name: 'Monitors',
items: [{
name: '19"',
items: [
{ name: 'DesktopLCD 19', price: 160 }
]
}, {
name: '21"',
items: [
{ name: 'DesktopLCD 21', price: 170 },
{ name: 'DesktopLED 21', price: 175 }
]
}]
}];
}
@NgModule({
imports: [
// ...
DxMenuModule
],
// ...
})Vue
App.vue
<template>
<DxMenu
:items="menuItems"
display-expr="name"
/>
</template>
<script>
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import DxMenu from 'devextreme-vue/menu';
export default {
components: {
DxMenu
},
data() {
return {
menuItems: [{
name: 'Video Players',
items: [
{ name: 'HD Video Player', price: 220 },
{ name: 'SuperHD Video Player', price: 270 }
]
}, {
name: 'Televisions',
items: [
{ name: 'SuperLCD 42', price: 1200 },
{ name: 'SuperLED 42', price: 1450 },
{ name: 'SuperLED 50', price: 1600 }
]
}, {
name: 'Monitors',
items: [{
name: '19"',
items: [
{ name: 'DesktopLCD 19', price: 160 }
]
}, {
name: '21"',
items: [
{ name: 'DesktopLCD 21', price: 170 },
{ name: 'DesktopLED 21', price: 175 }
]
}]
}]
};
}
};
</script>React
App.js
import React from 'react';
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import { Menu } from 'devextreme-react/menu';
const menuItems = [{
name: 'Video Players',
items: [
{ name: 'HD Video Player', price: 220 },
{ name: 'SuperHD Video Player', price: 270 }
]
}, {
name: 'Televisions',
items: [
{ name: 'SuperLCD 42', price: 1200 },
{ name: 'SuperLED 42', price: 1450 },
{ name: 'SuperLED 50', price: 1600 }
]
}, {
name: 'Monitors',
items: [{
name: '19"',
items: [
{ name: 'DesktopLCD 19', price: 160 }
]
}, {
name: '21"',
items: [
{ name: 'DesktopLCD 21', price: 170 },
{ name: 'DesktopLED 21', price: 175 }
]
}]
}];
class App extends React.Component {
render() {
return (
<Menu
items={menuItems}
displayExpr="name"
/>
);
}
}
export default App;See Also
- Configure a Widget: Angular | Vue | React | jQuery | AngularJS | Knockout | ASP.NET MVC 5 | ASP.NET Core
- Menu - Access the Clicked Item
- Menu - Customize Item Appearance
- Menu - Change the Orientation
- Menu API Reference
Feel free to share topic-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.