We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Trusted by the world’s leading companies

syncfusion trusted companies

Overview

The Angular Context Menu or right-click menu is a graphical user interface component that is easy to use and appears when the user right-clicks or performs a touch and hold action. The list of items in the context menu can be defined, multilevel menus created, and event handlers attached to the menu items for seamless integration with other components.

Angular Context menu items with separator


Multi-level nesting

Multi-level nested items are supported in context menu. You can browse the sub menu by mouse hover/click in menu items. The appearance of Angular context menu varies for desktop and mobile. In Mobile, users can view Multilevel nested items in single layer with provision to backtrack parent item.

Angular Context menu in desktop view

Angular Context menu in mobile view


You can include icons or sprite images in menu items easily to add the visual representation of the action in context menu.

Angular Context menu with icons

Context Menu Templates

Templates is used to create custom user experience. You can create custom Context Menu by using template for each element of Angular Context menu.

Template support in Angular Context menu item


Integration with other components

Angular Context menu can be used with any component. Adding a context menu to other components require simple configurations.


Other supported frameworks

Context Menu is also available in Blazor, React, Vue, and JavaScript frameworks. Check out the different Context Menu platforms from the links below,


Angular version compatibility

With continuous improvement in Angular versions, the Angular Context Menu is kept up to date to make it compatible with the latest version.


Themes

Angular Context Menu component supports built-in themes such as material, bootstrap, fabric (Office 365), and high contrast. Users can customize any one of these built-in themes or create new themes with ease to achieve their own desired look and feel either by simply overriding SASS variables or using our Theme Studio application.


Web Accessibility

  • Fully supports WAI-ARIA for working with screen readers and assistive devices.
  • Follows WAI-ARIA best practices for implementing keyboard interaction.
  • Based on WCAG 2.0 standards, we designed the UI element visuals such as foreground color, background color, line spacing, text, and images.
  • Supports right-to-left (RTL) text direction for users working in right-to-left languages like Hebrew, Arabic, or Persian.

Angular Context Menu Code Example

Easily get started with the Angular Context Menu component using a few simple lines of HTML and TS code example as demonstrated below. Also explore our Angular Context Menu Example that shows you how to render and configure a Context Menu in Angular.

<div class="contextmenu-section">
    <div id="contextmenu-control">
        <div id="contextmenutarget">
<div class="row ft-one-column segment">


<h2 id="overview">Overview</h2>

<p>The Angular ComboBox component is a drop-down list with an editable option that also allows users to choose an option from a predefined pop-up list. It can be used as an alternative to the HTML select tag and has several out-of-the-box features such as data binding, filtering, grouping, cascading, templates, UI customization, pop-up list customization, and more.</p>


<iframe class="lazy-iframe" loading="lazy" style="height:250px" data-src="https://ej2.syncfusion.com/products/typescript/combobox/first-sample/?editable=false"></iframe>



</div>
<hr>

<div class="row ft-two-column">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">


</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-content-small">
<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-data-binding.png" alt="Angular Combo Box data binding from different data sources"></p>

</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">

<h2 id="data-binding">Data binding</h2>

<p>You can bind data from a variety of data sources in an array or list of primitive data, JSON data collections, or remote data sources using different kinds of adapters such as OData, OData V4, URL, JSON, and Web API.</p>

<p>The component uses the Essential JS 2 data manager to manage data, and also has customization options for data requests and processing.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/demos/#/material/combo-box/data-binding">ComboBox data binding example</a></li>
</ul>


</div>

</div>
<hr>

<div class="row ft-two-column">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">

<h2 id="custom-value">Custom value</h2>

<p>The editable combo box allows the entry of a custom value when the option the user searched for is not available in the pop-up list. Also, you can set a value for the combo box or get the selected value from the combo box at any time through the interactive APIs.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/demos/#/material/combo-box/custom-value.html">ComboBox with custom value example</a></li>
</ul>


</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-content-small">
<p><img src="/products/angular-js2/control/images/combo-box/angular-editable-combobox-with-custom-value.png" alt="Angular ComboBox that allows custom values in the pop-up list"></p>

</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">


</div>

</div>
<hr>

<div class="row multi-column-conent-container">
<div class="ft-column-header text-left">
<h2 id="filtering">Filtering</h2>

<p>Built-in filtering support with a rich set of filtering configurations is available to meet all your application needs.</p>

</div>







<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 multi-col-contents">
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-custom-filtering.png" alt="Angular ComboBox filtering search based on custom algorithm"></p>

<h3 id="custom-filtering">Custom filtering</h3>

<p>Filter queries are customizable, and you can use your own filter libraries to filter data.</p>


</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-diacritic-sensitivity-search.png" alt="Angular ComboBox filtering with diacritic symbol sensitivity"></p>

<h3 id="diacritic-sensitivity">Diacritic sensitivity</h3>

<p>The Angular ComboBox component supports diacritic character sensitivity. This behavior can be turned on or off.</p>


</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-filter-settings.png" alt="Angular ComboBox filtering with case sensitivity and minimum search characters"></p>

<h3 id="filter-settings">Filter settings</h3>

<p>The filter search can be customized with case sensitivity, and can be performed with minimum query string characters.</p>


</div>
</div>
</div>
<hr>

<div class="row ft-two-column">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-content-small">
<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-category-grouping.png" alt="Angular ComboBox Grouping of pop-up list items based on category"></p>

</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">

<h2 id="grouping-with-category">Grouping with category</h2>

<p>Group the pop-up list items with a corresponding category that makes it easy for users to pick an item quickly from the drop-down, and also improves the visual experience for users.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/demos/#/material/combo-box/grouping-icon">ComboBox grouping example</a></li>
</ul>


</div>

</div>
<hr>

<div class="row ft-two-column">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">

<h2 id="autofill">Autofill</h2>

<p>The autofill option allows users to easily search through options in the combo box. When a user is typing a query string to search, the available matching options will be filled automatically.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/demos/#/material/combo-box/data-binding">ComboBox autofill option example</a></li>
</ul>


</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-content-small">
<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-autofill-suggestion.png" alt="Angular ComboBox autofill option while typing"></p>

</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">


</div>

</div>
<hr>

<div class="row ft-two-column">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-content-small"><iframe class="lazy-iframe" loading="lazy" style="height:250px" data-src="https://ej2.syncfusion.com/products/typescript/combobox/sixth-sample/?editable=false"></iframe></div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">

<h2 id="cascading-combo-boxes">Cascading combo boxes</h2>

<p>The Angular ComboBox component provides an option to create multiple cascading combo boxes, which helps users populate data for a child combo box based on the current selected value of the parent combo box.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/documentation/combo-box/how-to/cascading/">How to configure cascading combo boxes?</a></li>
</ul>


</div>

</div>
<hr>

<div class="row multi-column-conent-container">
<div class="ft-column-header text-left">
<h2 id="drop-down-styles-with-templates">Drop-down styles with templates</h2>

<p>Another important combo box feature is templates, which allow you to make custom appearances for the header, footer, and list items in the pop-up list.</p>

</div>







<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 multi-col-contents">
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-header-template.png" alt="Styling Angular ComboBox pop-up list with a header template"></p>

<h3 id="header-template">Header template</h3>

<p>Design your own header for the pop-up list using a header template.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/documentation/combo-box/templates/#header-template">Header template example</a></li>
</ul>


</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-item-template.png" alt="Styling Angular ComboBox pop-up list with item template"></p>

<h3 id="item-template">Item template</h3>

<p>Define the appearance of each item in the pop-up list with item templates.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/documentation/combo-box/templates/#item-template">Item template example</a></li>
</ul>


</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-footer-template.png" alt="Styling Angular ComboBox pop-up list with footer template"></p>

<h3 id="footer-template">Footer template</h3>

<p>Design your own custom and static footers for the pop-up list using footer templates.</p>

<ul class="list-unstyled">
  <li><a href="https://ej2.syncfusion.com/angular/documentation/combo-box/templates/#footer-template">Footer template example</a></li>
</ul>


</div>
</div>
</div>
<hr>

<div class="row multi-column-conent-container">
<div class="ft-column-header text-left">
<h2 id="customizing-the-ui">Customizing the UI</h2>

<p>You can customize each part of the combo box based on your application requirements.</p>

</div>







<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 multi-col-contents">
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-popup-list-items-with-icons.png" alt="Angular ComboBox pop-up list with icons"></p>

<h3 id="icons-in-list-items">Icons in list items</h3>

<p>Each list item can be configured to display a custom icon to improve the component’s readability and appearance.</p>


</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-empty-record-template.png" alt="Angular ComboBox pop-up list custom appearance when no records are found"></p>

<h3 id="empty-record">Empty record</h3>

<p>Configure a custom look for the pop-up list when no items are available to display.</p>


</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 three-col-content">

<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-popup-list-dimention-customization.png" alt="Angular ComboBox the pop-up list dimensions customization"></p>

<h3 id="customize-dimensions">Customize dimensions</h3>

<p>The dimensions of the pop-up list can be customized to fit the application.</p>


</div>
</div>
</div>
<hr>

<div class="row ft-two-column">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-content-small">
<p><img src="/products/angular-js2/control/images/combo-box/angular-combobox-form-validation.png" alt="Combo Box Angular with form validation"></p>

</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 col-img-small">

<h2 id="forms-support">Forms support</h2>

<p>Since the combo box is a form component, it supports HTML forms, template-driven forms (Angular), and reactive forms.</p>


</div>

</div>
<hr>

<div class="row ft-one-column segment">

<h2 id="mobile-responsive-ui">Mobile responsive UI</h2>

<p>The Angular ComboBox component supports a responsive mode that provides an adaptive, redesigned UI appearance for mobile devices and touch actions.</p>

</div>
<hr>

<div class="row ft-one-column segment">

<h2 id="angular-combobox-code-example">Angular ComboBox Code Example</h2>
<p>Easily get started with the Angular ComboBox using a few simple lines of HTML and TS code example as demonstrated below. Also explore our <a href="https://ej2.syncfusion.com/angular/demos/#/material/combo-box/default">Angular ComboBox Example</a> that shows you how to configure the combobox in Angular.</p>

<div class="code-snippet-tabs" id="code-snippet-1">

<ul class="nav nav-tabs" role="tablist">

<li role="presentation" class=""><a data-target="#7ezbegefrcoc89xpmi9x7qeu5c6vtpks-html" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="html">html</a></li>
<li role="presentation" class=""><a data-target="#khglta2cjvm103ru50kjlk6t8u350eb7-ts" aria-controls="home" role="tab" data-toggle="tab" data-original-lang="ts">ts</a></li>

</ul>

<div class="tab-content">



<div role="tabpanel" class="tab-pane" id="7ezbegefrcoc89xpmi9x7qeu5c6vtpks-html" data-original-lang="html">
<div class="highlight"><pre class="prettyprint linenums language-html" data-lang="html"><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"control-section"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;ejs-dropdownlist</span> <span class="na">id=</span><span class="s">'value'</span> <span class="na">#sample</span> <span class="na">index=</span><span class="s">'0'</span> <span class="na">width=</span><span class="s">'220'</span> <span class="na">[dataSource]=</span><span class="s">'ddlData'</span> <span class="na">(change)=</span><span class="s">'valueChange($event)'</span> <span class="na">[fields]=</span><span class="s">'fields'</span> <span class="na">[popupHeight]=</span><span class="s">'height'</span><span class="nt">&gt;&lt;/ejs-dropdownlist&gt;</span>
    <span class="nt">&lt;span</span> <span class="na">id=</span><span class="s">'msg'</span><span class="nt">&gt;&lt;/span&gt;</span>
    <span class="nt">&lt;br/&gt;</span>
    <span class="nt">&lt;ejs-grid</span> <span class="na">#overviewgrid</span> <span class="na">id=</span><span class="s">'overviewgrid'</span> <span class="na">[dataSource]=</span><span class="s">'data'</span> <span class="na">rowHeight=</span><span class="s">'38'</span> <span class="na">[allowSelection]=</span><span class="s">'true'</span> <span class="na">[allowSorting]=</span><span class="s">'true'</span> <span class="na">height=</span><span class="s">'600'</span> <span class="na">(dataBound)=</span><span class="s">'onDataBound($event)'</span> <span class="na">[enableHover]=</span><span class="s">'false'</span> <span class="na">[selectionSettings]=</span><span class="s">'selectionSettings'</span> <span class="na">[filterSettings]=</span><span class="s">'filterSettings'</span> <span class="na">[allowSorting]=</span><span class="s">'true'</span> <span class="na">[allowFiltering]=</span><span class="s">'true'</span> <span class="na">[enableVirtualization]=</span><span class="s">'true'</span><span class="nt">&gt;</span>
        <span class="nt">&lt;e-columns&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">type=</span><span class="s">'checkbox'</span> <span class="na">[allowFiltering]=</span><span class="s">'false'</span> <span class="na">[allowSorting]=</span><span class="s">'false'</span> <span class="na">width=</span><span class="s">'60'</span><span class="nt">&gt;&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'EmployeeID'</span> <span class="na">[visible]=</span><span class="s">'false'</span> <span class="na">headerText=</span><span class="s">'Employee ID'</span> <span class="na">width=</span><span class="s">'130'</span> <span class="na">[isPrimaryKey]=</span><span class="s">'true'</span><span class="nt">&gt;&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Employees'</span> <span class="na">headerText=</span><span class="s">'Employee Name'</span> <span class="na">[filter]=</span><span class="s">'filter'</span> <span class="na">clipMode=</span><span class="s">'EllipsisWithTooltip'</span> <span class="na">width=</span><span class="s">'200'</span><span class="nt">&gt;</span>
                <span class="nt">&lt;ng-template</span> <span class="na">#template</span> <span class="na">let-data</span><span class="nt">&gt;</span>
                    <span class="nt">&lt;div&gt;</span>
                        <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"empimg"</span><span class="nt">&gt;</span>
                          <span class="nt">&lt;span</span> <span class="na">*ngIf=</span><span class="s">"data.EmployeeImg === 'usermale'"</span> <span class="na">class=</span><span class="s">"e-userimg sf-icon-Male"</span><span class="nt">&gt;</span>
                          <span class="nt">&lt;/span&gt;</span>
                          <span class="nt">&lt;span</span> <span class="na">*ngIf=</span><span class="s">"data.EmployeeImg === 'userfemale'"</span> <span class="na">class=</span><span class="s">"e-userimg sf-icon-FeMale"</span><span class="nt">&gt;</span>
                        <span class="nt">&lt;/span&gt;</span>
                        <span class="nt">&lt;/div&gt;</span> 
                        <span class="nt">&lt;span</span> <span class="na">id=</span><span class="s">"Emptext"</span><span class="nt">&gt;&lt;/span&gt;</span>
                      <span class="nt">&lt;/div&gt;</span>                  
                <span class="nt">&lt;/ng-template&gt;</span>
            <span class="nt">&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Designation'</span> <span class="na">headerText=</span><span class="s">'Designation'</span> <span class="na">[filter]=</span><span class="s">'filter'</span> <span class="na">clipMode=</span><span class="s">'EllipsisWithTooltip'</span> <span class="na">width=</span><span class="s">'170'</span> <span class="nt">&gt;&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Mail'</span> <span class="na">headerText=</span><span class="s">'Mail'</span> <span class="na">[filter]=</span><span class="s">'filterSettings'</span> <span class="na">width=</span><span class="s">'230'</span><span class="nt">&gt;&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Location'</span> <span class="na">headerText=</span><span class="s">'Location'</span> <span class="na">[filter]=</span><span class="s">'filter'</span> <span class="na">width=</span><span class="s">'140'</span><span class="nt">&gt;</span>
                <span class="nt">&lt;ng-template</span> <span class="na">#template</span> <span class="na">let-data</span><span class="nt">&gt;</span>
                    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"loc"</span><span class="nt">&gt;</span>
                        <span class="nt">&lt;img</span> <span class="na">src=</span><span class="s">"./assets/grid/images/Map.png"</span> <span class="na">class=</span><span class="s">"e-image"</span> <span class="na">alt=</span><span class="s">""</span> <span class="nt">/&gt;</span>
                        <span class="nt">&lt;span</span> <span class="na">id=</span><span class="s">"locationtext"</span><span class="nt">&gt;&lt;/span&gt;</span>
                    <span class="nt">&lt;/div&gt;</span>
                <span class="nt">&lt;/ng-template&gt;</span>
            <span class="nt">&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Status'</span> <span class="na">[filter]=</span><span class="s">'filter'</span> <span class="na">headerText=</span><span class="s">'Status'</span> <span class="na">width=</span><span class="s">'150'</span><span class="nt">&gt;</span>
                <span class="nt">&lt;ng-template</span> <span class="na">#template</span> <span class="na">let-data</span><span class="nt">&gt;</span>                       
                    <span class="nt">&lt;div</span> <span class="na">*ngIf=</span><span class="s">"data.Status === 'Active';else login"</span> <span class="na">class=</span><span class="s">"statustemp e-activecolor"</span><span class="nt">&gt;</span>                                          
                            <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"statustxt e-activecolor"</span><span class="nt">&gt;&lt;/span&gt;</span>           
                    <span class="nt">&lt;/div&gt;</span>
                    <span class="nt">&lt;ng-template</span> <span class="na">#login</span><span class="nt">&gt;</span>
                        <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"statustemp e-inactivecolor"</span><span class="nt">&gt;</span>
                            <span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"statustxt e-inactivecolor"</span><span class="nt">&gt;&lt;/span&gt;</span>
                        <span class="nt">&lt;/div&gt;</span>
                        <span class="nt">&lt;/ng-template&gt;</span>
                <span class="nt">&lt;/ng-template&gt;</span>               
            <span class="nt">&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Trustworthiness'</span> <span class="na">[filter]=</span><span class="s">'filter'</span> <span class="na">headerText=</span><span class="s">'Trustworthiness'</span> <span class="na">width=</span><span class="s">'200'</span><span class="nt">&gt;</span>
                <span class="nt">&lt;ng-template</span> <span class="na">#template</span> <span class="na">let-data</span><span class="nt">&gt;</span>
                    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"trust"</span><span class="nt">&gt;</span>
                        <span class="nt">&lt;img</span> <span class="na">style=</span><span class="s">"width: 31px; height: 24px"</span> <span class="na">src=</span><span class="s">"./assets/grid/images/.png"</span> <span class="nt">/&gt;</span>                        
                                <span class="nt">&lt;span</span> <span class="na">id=</span><span class="s">"Trusttext"</span><span class="nt">&gt;&lt;/span&gt;</span>
                    <span class="nt">&lt;/div&gt;</span>
                <span class="nt">&lt;/ng-template&gt;</span>
            <span class="nt">&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Rating'</span> <span class="na">[allowFiltering]=</span><span class="s">'false'</span> <span class="na">headerText=</span><span class="s">'Rating'</span> <span class="na">width=</span><span class="s">'160'</span><span class="nt">&gt;</span>
                <span class="nt">&lt;ng-template</span> <span class="na">#template</span> <span class="na">let-data</span><span class="nt">&gt;</span>
                    <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"rate"</span><span class="nt">&gt;</span>
                        <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"rating"</span><span class="nt">&gt;</span>
                            <span class="nt">&lt;span</span> <span class="na">*ngFor=</span><span class="s">"let i of item"</span> <span class="na">[ngClass]=</span><span class="s">"{'checked': data.Rating &gt;= i, 'star': true }"</span><span class="nt">&gt;&lt;/span&gt;</span>
                        <span class="nt">&lt;/div&gt;</span>
                    <span class="nt">&lt;/div&gt;</span>                            
            <span class="nt">&lt;/ng-template&gt;</span>
            <span class="nt">&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Software'</span> <span class="na">headerText=</span><span class="s">'Software'</span> <span class="na">[allowSorting]=</span><span class="s">'false'</span> <span class="na">[allowFiltering]=</span><span class="s">'false'</span> <span class="na">width=</span><span class="s">'180'</span><span class="nt">&gt;</span>
                <span class="nt">&lt;ng-template</span> <span class="na">#template</span> <span class="na">let-data</span><span class="nt">&gt;</span>
                    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"myProgress"</span> <span class="na">class=</span><span class="s">"pbar"</span><span class="nt">&gt;</span>
                        <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"myBar"</span>  <span class="na">*ngIf=</span><span class="s">"data.Status === 'Inactive';"</span> <span class="err">[</span><span class="na">style</span><span class="err">.</span><span class="na">width</span><span class="err">.%</span><span class="na">]= </span><span class="s">data.Software</span> <span class="na">class=</span><span class="s">"bar progressdisable"</span><span class="nt">&gt;</span>
                          <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"label"</span> <span class="na">class=</span><span class="s">"barlabel"</span><span class="nt">&gt;</span>%<span class="nt">&lt;/div&gt;</span>
                        <span class="nt">&lt;/div&gt;</span>    
                        <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"myBar"</span>  <span class="na">*ngIf=</span><span class="s">"data.Status === 'Active';"</span> <span class="err">[</span><span class="na">style</span><span class="err">.</span><span class="na">width</span><span class="err">.%</span><span class="na">]= </span><span class="s">data.Software</span> <span class="na">class=</span><span class="s">"bar"</span><span class="nt">&gt;</span>
                                <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"label"</span> <span class="na">class=</span><span class="s">"barlabel"</span><span class="nt">&gt;</span>%<span class="nt">&lt;/div&gt;</span>
                              <span class="nt">&lt;/div&gt;</span>                               
                      <span class="nt">&lt;/div&gt;</span>                              
                <span class="nt">&lt;/ng-template&gt;</span>
            <span class="nt">&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'CurrentSalary'</span> <span class="na">headerText=</span><span class="s">'Current Salary'</span> <span class="na">[filter]=</span><span class="s">'filterSettings'</span> <span class="na">format=</span><span class="s">'C2'</span> <span class="na">width=</span><span class="s">'160'</span><span class="nt">&gt;&lt;/e-column&gt;</span>
            <span class="nt">&lt;e-column</span> <span class="na">field=</span><span class="s">'Address'</span> <span class="na">headerText=</span><span class="s">'Address'</span> <span class="na">[filter]=</span><span class="s">'filterSettings'</span> <span class="na">clipMode=</span><span class="s">'EllipsisWithTooltip'</span> <span class="na">width=</span><span class="s">'240'</span><span class="nt">&gt;&lt;/e-column&gt;</span>
        <span class="nt">&lt;/e-columns&gt;</span>
    <span class="nt">&lt;/ejs-grid&gt;</span>   
<span class="nt">&lt;/div&gt;</span></pre></div>
</div>

<div role="tabpanel" class="tab-pane" id="khglta2cjvm103ru50kjlk6t8u350eb7-ts" data-original-lang="ts">
<div class="highlight"><pre class="prettyprint linenums language-ts" data-lang="ts"><span class="k">import</span> <span class="p">{</span> <span class="nx">Component</span><span class="p">,</span> <span class="nx">OnInit</span><span class="p">,</span> <span class="nx">TemplateRef</span><span class="p">,</span><span class="nx">ViewChild</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@angular/core</span><span class="dl">'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">orderData</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">./data</span><span class="dl">'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">FilterService</span><span class="p">,</span> <span class="nx">GridComponent</span><span class="p">,</span><span class="nx">IFilter</span><span class="p">,</span><span class="nx">VirtualScrollService</span>  <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@syncfusion/ej2-angular-grids</span><span class="dl">'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">DropDownListComponent</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@syncfusion/ej2-angular-dropdowns</span><span class="dl">'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">CheckBox</span>  <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">@syncfusion/ej2-buttons</span><span class="dl">'</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">getData</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">./data</span><span class="dl">'</span><span class="p">;</span>

<span class="p">@</span><span class="nd">Component</span><span class="p">({</span>
    <span class="na">selector</span><span class="p">:</span> <span class="dl">'</span><span class="s1">ej-gridbatchedit</span><span class="dl">'</span><span class="p">,</span>
    <span class="na">templateUrl</span><span class="p">:</span> <span class="dl">'</span><span class="s1">over-view.html</span><span class="dl">'</span><span class="p">,</span>
    <span class="na">styleUrls</span><span class="p">:</span> <span class="p">[</span><span class="dl">'</span><span class="s1">overview.style.css</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">../../styles/Grid/style.css</span><span class="dl">'</span><span class="p">],</span>
    <span class="na">providers</span><span class="p">:</span> <span class="p">[</span><span class="nx">FilterService</span><span class="p">,</span><span class="nx">VirtualScrollService</span><span class="p">]</span>
<span class="p">})</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">OverViewComponent</span> <span class="kr">implements</span> <span class="nx">OnInit</span> <span class="p">{</span>   
    <span class="kr">public</span> <span class="nx">dReady</span><span class="p">:</span> <span class="nx">boolean</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">dtTime</span><span class="p">:</span> <span class="nx">boolean</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">isDataBound</span><span class="p">:</span> <span class="nx">boolean</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">isDataChanged</span><span class="p">:</span> <span class="nx">boolean</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">intervalFun</span><span class="p">:</span> <span class="nx">any</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">clrIntervalFun</span><span class="p">:</span> <span class="nx">any</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">clrIntervalFun1</span><span class="p">:</span> <span class="nx">any</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">clrIntervalFun2</span><span class="p">:</span> <span class="nx">any</span><span class="p">;</span>    
    <span class="kr">public</span> <span class="nx">dropSlectedIndex</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">stTime</span><span class="p">:</span> <span class="nx">any</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">data</span><span class="p">:</span> <span class="nb">Object</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">filter</span><span class="p">:</span> <span class="nb">Object</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">filterSettings</span><span class="p">:</span> <span class="nb">Object</span><span class="p">;</span>
    <span class="kr">public</span> <span class="nx">selectionSettings</span><span class="p">:</span> <span class="nb">Object</span><span class="p">;</span>  
    <span class="kr">public</span> <span class="nx">height</span><span class="p">:</span> <span class="nx">string</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">240px</span><span class="dl">'</span><span class="p">;</span>
    <span class="p">@</span><span class="nd">ViewChild</span><span class="p">(</span><span class="dl">'</span><span class="s1">sample</span><span class="dl">'</span><span class="p">)</span> 
    <span class="kr">public</span> <span class="nx">listObj</span><span class="p">:</span> <span class="nx">DropDownListComponent</span><span class="p">;</span>
    <span class="p">@</span><span class="nd">ViewChild</span><span class="p">(</span><span class="dl">'</span><span class="s1">overviewgrid</span><span class="dl">'</span><span class="p">)</span>
    <span class="kr">public</span> <span class="nx">gridInstance</span> <span class="p">:</span> <span class="nx">GridComponent</span> <span class="p">;</span>  
    <span class="kr">public</span> <span class="nx">ddlData</span><span class="p">:</span> <span class="nb">Object</span><span class="p">[]</span> <span class="o">=</span> <span class="p">[</span>
        <span class="p">{</span> <span class="na">text</span><span class="p">:</span> <span class="dl">'</span><span class="s1">1,000 Rows and 11 Columns</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">1000</span><span class="dl">'</span> <span class="p">},</span>
        <span class="p">{</span> <span class="na">text</span><span class="p">:</span> <span class="dl">'</span><span class="s1">10,000 Rows and 11 Columns</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">10000</span><span class="dl">'</span> <span class="p">},</span>
        <span class="p">{</span> <span class="na">text</span><span class="p">:</span> <span class="dl">'</span><span class="s1">1,00,000 Rows and 11 Columns</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">100000</span><span class="dl">'</span> <span class="p">}</span>      
    <span class="p">];</span> 
    <span class="kr">public</span> <span class="nx">fields</span><span class="p">:</span> <span class="nb">Object</span> <span class="o">=</span> <span class="p">{</span> <span class="na">text</span><span class="p">:</span> <span class="dl">'</span><span class="s1">text</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">value</span><span class="dl">'</span> <span class="p">};</span>
    <span class="kr">public</span> <span class="nx">item</span><span class="p">:</span> <span class="nx">number</span><span class="p">[]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">];</span>  

    <span class="kr">public</span> <span class="nx">ngOnInit</span><span class="p">():</span> <span class="k">void</span> <span class="p">{</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">getData</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">filterSettings</span> <span class="o">=</span> <span class="p">{</span> <span class="na">type</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Menu</span><span class="dl">"</span> <span class="p">};</span>      
        <span class="k">this</span><span class="p">.</span><span class="nx">filter</span> <span class="o">=</span> <span class="p">{</span> <span class="na">type</span><span class="p">:</span> <span class="dl">"</span><span class="s2">CheckBox</span><span class="dl">"</span> <span class="p">};</span>    
       <span class="k">this</span><span class="p">.</span><span class="nx">stTime</span> <span class="o">=</span> <span class="nx">performance</span><span class="p">.</span><span class="nx">now</span><span class="p">();</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">selectionSettings</span> <span class="o">=</span> <span class="p">{</span><span class="na">persistSelection</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span> <span class="na">type</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Multiple</span><span class="dl">"</span><span class="p">,</span> <span class="na">checkboxOnly</span><span class="p">:</span> <span class="kc">true</span> <span class="p">};</span>
       
    <span class="p">}</span>
    
    <span class="nx">ngAfterViewInit</span><span class="p">(</span><span class="na">args</span><span class="p">:</span> <span class="nx">any</span><span class="p">):</span> <span class="k">void</span> <span class="p">{</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">gridInstance</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">data-ready</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
            <span class="k">this</span><span class="p">.</span><span class="nx">dReady</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
        <span class="p">});</span>
        <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">overviewgrid</span><span class="dl">'</span><span class="p">).</span><span class="nx">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">DOMSubtreeModified</span><span class="dl">'</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>  
            <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">stTime</span> <span class="o">&amp;&amp;</span> <span class="k">this</span><span class="p">.</span><span class="nx">isDataChanged</span><span class="p">)</span> <span class="p">{</span>
                <span class="kd">let</span> <span class="nx">msgEle</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">msg</span><span class="dl">'</span><span class="p">);</span>
                <span class="kd">let</span> <span class="na">val</span><span class="p">:</span> <span class="nx">any</span> <span class="o">=</span> <span class="p">(</span><span class="nx">performance</span><span class="p">.</span><span class="nx">now</span><span class="p">()</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">stTime</span><span class="p">).</span><span class="nx">toFixed</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
                <span class="k">this</span><span class="p">.</span><span class="nx">stTime</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>                
                <span class="k">this</span><span class="p">.</span><span class="nx">dtTime</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
                <span class="k">this</span><span class="p">.</span><span class="nx">isDataChanged</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
                <span class="nx">msgEle</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">Load Time: </span><span class="dl">'</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">&lt;b&gt;</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">val</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">&lt;/b&gt;</span><span class="dl">"</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">&lt;b&gt;ms&lt;/b&gt;</span><span class="dl">'</span><span class="p">;</span>
                <span class="nx">msgEle</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">remove</span><span class="p">(</span><span class="dl">'</span><span class="s1">e-hide</span><span class="dl">'</span><span class="p">)</span>
           <span class="p">}</span>
            <span class="p">})</span>
    <span class="p">}</span>
    <span class="nx">valueChange</span><span class="p">(</span><span class="na">args</span><span class="p">:</span><span class="nx">any</span><span class="p">):</span> <span class="k">void</span> <span class="p">{</span>
		<span class="k">this</span><span class="p">.</span><span class="nx">listObj</span><span class="p">.</span><span class="nx">hidePopup</span><span class="p">();</span>	
        <span class="k">this</span><span class="p">.</span><span class="nx">gridInstance</span><span class="p">.</span><span class="nx">showSpinner</span><span class="p">();</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">dropSlectedIndex</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
         <span class="kd">let</span> <span class="na">index</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">listObj</span><span class="p">.</span><span class="nx">value</span> <span class="k">as</span> <span class="nx">number</span><span class="p">;</span>         
         <span class="nx">clearTimeout</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">clrIntervalFun2</span><span class="p">);</span>
         <span class="k">this</span><span class="p">.</span><span class="nx">clrIntervalFun2</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="p">{</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">isDataChanged</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">stTime</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
             <span class="kd">let</span> <span class="na">contentElement</span><span class="p">:</span> <span class="nx">Element</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">gridInstance</span><span class="p">.</span><span class="nx">contentModule</span><span class="p">.</span><span class="nx">getPanel</span><span class="p">().</span><span class="nx">firstChild</span> <span class="k">as</span> <span class="nx">Element</span><span class="p">;</span>
             <span class="nx">contentElement</span><span class="p">.</span><span class="nx">scrollLeft</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
             <span class="nx">contentElement</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">gridInstance</span><span class="p">.</span><span class="nx">pageSettings</span><span class="p">.</span><span class="nx">currentPage</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">stTime</span> <span class="o">=</span> <span class="nx">performance</span><span class="p">.</span><span class="nx">now</span><span class="p">();</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">gridInstance</span><span class="p">.</span><span class="nx">dataSource</span> <span class="o">=</span> <span class="nx">getData</span><span class="p">(</span><span class="nx">index</span><span class="p">);</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">gridInstance</span><span class="p">.</span><span class="nx">hideSpinner</span><span class="p">();</span>     
         <span class="p">},</span> <span class="mi">100</span><span class="p">);</span>
    <span class="p">}</span>
    <span class="nx">onDataBound</span><span class="p">(</span><span class="na">args</span><span class="p">:</span><span class="nx">any</span><span class="p">):</span><span class="k">void</span> <span class="p">{</span>
        <span class="nx">clearTimeout</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">clrIntervalFun</span><span class="p">);</span>
        <span class="nx">clearInterval</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">intervalFun</span><span class="p">);</span>
        <span class="k">this</span><span class="p">.</span><span class="nx">dtTime</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
    <span class="p">}</span>
    
<span class="p">}</span></pre></div>
</div>


</div>

</div>

</div>
<hr>

<div class="row multi-column-conent-container">
<div class="row ft-one-column segment">

<h2 id="other-supported-frameworks">Other supported frameworks</h2>

<p>ComboBox is also available in Blazor, React, Vue, and JavaScript frameworks. Check out the different ComboBox platforms from the links below,</p>

<ul>
  <li><a href="https://www.syncfusion.com/blazor-components/blazor-combobox">Blazor ComboBox</a></li>
  <li><a href="https://www.syncfusion.com/react-ui-components/react-combobox">React ComboBox</a></li>
  <li><a href="https://www.syncfusion.com/vue-ui-components/vue-combobox">Vue ComboBox</a></li>
  <li><a href="https://www.syncfusion.com/javascript-ui-controls/js-combobox">JavaScript ComboBox</a></li>
</ul>

</div>






<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 multi-col-contents">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 two-col-content">

<h2 id="web-accessibility">Web accessibility</h2>

<ul>
  <li>
    <p>Fully supports <a href="https://www.w3.org/TR/wai-aria-practices/#combobox">WAI-ARIA</a> accessibility guidelines to work with screen readers and assistive devices.</p>
  </li>
  <li>
    <p>Follows <a href="https://www.w3.org/TR/wai-aria-practices/#combobox">WAI-ARIA best practices</a> for implementing keyboard interaction.</p>
  </li>
  <li>
    <p>Designs the UI element visuals such as foreground color, background color, line spacing, text, and images based on <a href="https://www.w3.org/TR/WCAG20/">WCAG 2.0</a> standard.</p>
  </li>
  <li>
    <p>Supports right-to-left (RTL) direction for users working in right-to-left languages like Hebrew, Arabic, or Persian.</p>
  </li>
</ul>


</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12 two-col-content">

<h2 id="developer-friendly-apis">Developer friendly APIs</h2>

<p>Developers can customize all UI elements and control their behaviors according to the end user’s requirements using its rich set of client-side APIs.</p>


</div>
</div>
</div>
<hr>

<div class="row ft-one-column segment" id="single-column-link-section">

<h2 id="not-sure-how-to-create-your-first-angular-combobox-our-documentation-can-help">Not sure how to create your first Angular ComboBox? Our documentation can help.</h2>

<ul>
  <li><a href="https://ej2.syncfusion.com/angular/documentation/combo-box/getting-started/">I’d love to read it now</a></li>
</ul>

</div>
<hr>

</div>
        <ejs-contextmenu #contextmenu target='#contextmenutarget' [items]='menuItems'></ejs-contextmenu>
    </div>
</div>
import { Component } from '@angular/core';
import { MenuItemModel } from '@syncfusion/ej2-navigations';

@Component({
  selector: 'app-root',
  template: `<!--target element-->
            <div id="target">Right click / Touch hold to open the ContextMenu</div>

            <!-- To Render ContextMenu. -->
            <ejs-contextmenu id='contextmenu' target='#contextmenutarget' [items]= 'menuItems'></ejs-contextmenu>`
})

export class AppComponent {
    public menuItems: MenuItemModel[] = [
    {
        text: 'Cut'
    },
    {
        text: 'Copy'
    },
    {
        text: 'Paste'
    }];
}


70+ ANGULAR UI COMPONENTS

Read independent,
authenticated reviews
on G2

Download Now Pricing

What do our customers say about us?

double quotes

Using Syncfusion Angular and JavaScript controls makes front-end web development a piece of cake. Each component has many properties that can be configured as per your desire, methods that can be used to interact with the element, and a lot of events that trigger at different stages, which makes modifying your components according to the state of the application an easy task. Also, their support is amazing! They always offer a sample working project, which makes it very simple to solve your question about your code.
Carlos Rodriguez Garcia

Carlos Rodriguez Garcia

Vistatec

double quotes

We started using Syncfusion Angular controls for the Scheduler to offer our providers a way to schedule their availability and automate our administrative process to show availability and gaps in schedules. This helped us provide the best user experience and deliver care to our patients in a timely manner.
Tim Rankel

Tim Rankel

Senior Developer at MeMD

Transform your applications today by downloading our free evaluation version Download Free Trial

Awards

Greatness—it’s one thing to say you have it, but it means more when others recognize it. Syncfusion is proud to hold the following industry awards.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile