#angular #twitter-bootstrap #angular-ui-bootstrap #dropdown #ng-bootstrap
#angular #twitter-bootstrap #angular-пользовательский интерфейс-bootstrap #выпадающий #ng-bootstrap
Вопрос:
Я использую ngbdropdown в нескольких элементах, подобных этому
<div *ngFor="let item of items" class="most parent div">
<div (click)="doSomething()">
<div ngbDropdown [autoClose]="'outside'">
<button ngbDropdownToggle (click)="$event.stopPropagation();">
Toggle dropdown 1
</button>
<div ngbDropdownMenu>
<button ngbDropdownItem>Action - 1</button>
</div>
</div>
<div (click)="doSomething()">
<div ngbDropdown [autoClose]="'outside'">>
<button ngbDropdownToggle (click)="$event.stopPropagation();">
Toggle dropdown 2
</button>
<div ngbDropdownMenu>
<button ngbDropdownItem>Action - 1</button>
</div>
</div>
</div>
В основном некоторая функция вызывается из родительского элемента выпадающего списка.
Чтобы предотвратить вызов родительского элемента (click), я использую $event.stopPropagation()
.
Я использовал свойство autoclose ngb-dropdown, чтобы закрыть его, когда пользователь нажимает за пределами его области.
тем не менее, когда я открываю второй выпадающий список, 1-й не закрывается.
есть ли какой-либо способ закрыть любой другой открытый выпадающий список без вызова click
события его родителя? в angular? используя ngbDropDown?
Комментарии:
1. Я не могу открыть оба выпадающих списка одновременно! stackblitz.com/edit/angular-cepdv6
2. я не знаю, почему, но. Я могу открыть оба,
autoclose
установив значениеoutside
3. Даже в приведенном выше stackblitz?
Ответ №1:
Этот пример может помочь вам
<div ngbDropdown class="d-inline-block">
<button class="btn btn-outline-primary" ngbDropdownToggle>{{dropdownMenuName}}</button>
<div class="dropdown-menu" aria-labelledby="sortMenu">
<button class="dropdown-item" *ngFor="let sortOrder of sortOrders" (click)="ChangeSortOrder(sortOrder)">
{{sortOrder}}
</button>
</div>
</div>
<div ngbDropdown class="d-inline-block">
<button class="btn btn-outline-primary" ngbDropdownToggle>{{dropdownMenuName}}</button>
<div class="dropdown-menu" aria-labelledby="sortMenu">
<button class="dropdown-item" *ngFor="let sortOrder of sortOrders" (click)="ChangeSortOrder(sortOrder)">
{{sortOrder}}
</button>
</div>
</div>
в component.ts
sortOrders: string[] = ['Year', 'Title', 'Author'];
dropdownMenuName: string = 'Sort by...';
ChangeSortOrder(newSortOrder: string) {
this.dropdownMenuName = newSortOrder;
}
Комментарии:
1. я не понимаю, как это связано с моей проблемой
2. здесь он закрывает 1-й выпадающий список, когда вы открываете 2-й, и он закроется, когда пользователь щелкнет снаружи