ユーザがアラームリスト内のアイテムを右クリックするとコンテキストメニューを表示しようとしています。問題は、openMenu()
をコンポーネントから呼び出すには、指示文mdMenuTriggerFor
を使用する必要があることです。しかし、この指令は左クリックで動作するように意図されているので、メニューは常に表示されます(左クリック&)。また、右クリックすると、メニューがリストの一番上に表示されます。角度アイテム2のメニューをリストアイテムのコンテキストメニューとして使用する
私のコードは次のようになります。
<div class="list">
<div *ngFor="let alarm of (_alarms | alarmsFilter:search.value)">
<alarm-item [alarm]="alarm" (onClick)="onSelection(alarm)" (contextmenu)="onContextMenu($event, alarm)" [mdMenuTriggerFor]="appMenu"></alarm-item>
</div>
</div>
<md-menu #appMenu="mdMenu">
<!-- Menu content -->
</md-menu>
そして、私のコンポーネントtypescriptファイルは次のようになります。
@Component({
selector: // My selector
templateUrl: // My template URL
})
export class AlarmComponent {
@Input() alarm;
@ViewChild(MdMenuTrigger) trigger: MdMenuTrigger;
// ...
private onContextMenu($event: Event, alarm: Alarm): void {
this.trigger.openMenu();
$event.preventDefault();
}
任意の提案ですか?