Reputation: 80
Hii I'm using click
function on p
tag,
When user opens the dropdown menu, on click outside close the dropdown in angular
Html code
<div class="select_cat">
<p class="cat_name" (click)="openCategoriesList()"> </p>
</div>
<div class="categories_list" *ngIf="openCategories">
<ul *ngFor="let category of categories">
<span class="title">{{category.group_name}}
</span>
<li *ngFor="let categoryData of category.categories" (click)="categoryClick(categoryData)">
</li>
</ul>
</div>
Upvotes: 1
Views: 726
Reputation: 2252
Use (document:click) event:
.html code
<div class="select_cat" #paraDiv> /* Created a reference here */
<p class="cat_name" (click)="openCategoriesList()">Open CategoryList</p>
</div>
<div class="categories_list" *ngIf="openCategories">
<ul *ngFor="let category of categories">
<span class="title">{{category.group_name}}
</span>
<li *ngFor="let categoryData of category.categories" (click)="categoryClick(categoryData)">
</li>
</ul>
</div>
.ts code
@Component({
host: {
'(document:click)': 'onDocumentClick($event)',
}
})
@ViewChild('paraDiv', {static: false}) paraDiv;
onDocumentClick(event) {
if (!this.paraDiv.nativeElement.contains(event.target)) { // outside click
this.openCategories = false;
}
}
Upvotes: 2
Reputation: 105
<mat-select #mySelect placeholder="Favorite food">
<mat-option *ngFor="let food of foods" [value]="food.value">
{{ food.viewValue }}
</mat-option>
</mat-select>
import {Component, ViewChild} from '@angular/core';
@Component({
selector: 'select-overview-example',
templateUrl: 'select-overview-example.html',
styleUrls: ['select-overview-example.css'],
})
export class SelectOverviewExample {
@ViewChild('mySelect') mySelect;
foods = [
{value: 'steak-0', viewValue: 'Steak'},
{value: 'pizza-1', viewValue: 'Pizza'},
{value: 'tacos-2', viewValue: 'Tacos'}
];
click() {
this.mySelect.open();
}
}
Upvotes: 0