以下のsampleというコンポーネント内でドロップダウンメニュー(子)を追加したのですが、ドロップダウン(子)を押下した際に、親要素のクリックイベントも同時に発火してしまう為、子要素のみドロップダウンメニューを開くように実装したいです。
stopPropagationを使用しようと思ったのですが、toggle操作でありclickイベントが発生するわけではなく、どちらのイベントも発火しませんでした。
できればjqueryなしで実現したいです。
使用技術
- angular5
- bootstrap4
コンポーネント構成
- sample.component
|_sample.component.html
|_sample.component.ts
以下、スクリプトになります。
どなたか詳しい方ご教示いただけると有難いです。
よろしくお願い致します。
- sample.component.html
sample.component.html
1<div> 2 <ng-container *ngFor="let sample of sampleList, let i = index" > 3 <ul (click)="parentsAction()" class="cursor-pointer" > 4 <li> 5 <div class="row" style="box-sizing: border-box;"> 6 <div class="col-6 pl-10 pr-2 my-auto" style="box-sizing: border-box;"> 7 親イベント発火 8 </div> 9 <div class="col-6" style="box-sizing: border-box;"> 10 <div class="row"> 11 <div class="col-12 clearfix"> 12 <div class="m-auto float-right"> 13 <div class="dropright"> 14 <i (click)="childOnlyAction()" id="open-dropdown" aria-hidden="true" class="material-icons" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">more_horiz</i> 15 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> 16 <a class="dropdown-item">プルダウンアイテム1</a> 17 <a class="dropdown-item">プルダウンアイテム2</a> 18 </div> 19 </div> 20 </div> 21 </div> 22 </div> 23 </div> 24 </div> 25 </li> 26 </ul> 27 </ng-container> 28 </div>
- sample.component.ts
childOnlyAction() { event.stopPropagation(); console.log('click inside input'); return false; //これだと親子どちらもクリックできない }
あなたの回答
tips
プレビュー