Angular 2: check if shift key is shifted when element is pressed

In an Angular 2 application, I want the click event to trigger something else when the shift key is held down. how to achieve this?

html is below:

<div class="item" *ngFor="#obj of available" (click)="toggleSelected(obj)"></div>

and I want to do something like this:

  toggleSelected(obj) {
    if(shift is pressed) {
      do this
    } else {
      do that
    }
  }

so how can I tell if the shift key is pressed? thank!

+10
source share
3 answers

In the binding, (click)pass the object to the $eventmethod toggleSelected:

<div class="item" *ngFor="#obj of available" (click)="toggleSelected(obj, $event)"></div>

In the method, toggleSelectedcheck if the event property is shiftKey true:

toggleSelected(obj, event) {
  if(event.shiftKey) {
    do this
  } else {
    do that
  }
}
+24
source

Your question may relate to the multiple select option for table entries.

In this case, you can store the selected objects in a set.

public selectedRowSet: Set<MyObject> = new Set();    

, , , .

public setSelectedRow(obj: MyObject, event: MouseEvent) {
  if(!event.shiftKey) {
    selectedRowSet.clear();
  }
  selectedRowSet.add(obj);
}

, , .

public isRowSelected(obj: MyObject): boolean
{
  return selectedRowSet.has(obj);
}

:

<tr *ngFor="let obj of myObjectCollection" 
    [class.someCssClass]="isRowSelected(obj)" 
    (click)="setSelectedRow(obj, $event);">
...
</tr>

, :

  • Shift Ctrl ( )
  • , .

, - .

public setSelectedRow(bo: Bo, event: MouseEvent) {
  // support shift, control and the command key.
  const add = event.shiftKey || event.ctrlKey || event.metaKey;
  if (!add) {
    this.selectedRowSet.clear();
    this.selectedRowSet.add(bo);
    return;
  }

  // toggle selected record
  if (this.selectedRowSet.has(bo)) {
    this.selectedRowSet.delete(bo);
  }
  else {
    this.selectedRowSet.add(bo);
  }
}
+5

Use keypress

<div class="item" *ngFor="#obj of available" (keypress)="eventHandler($event)"></div>

eventHandler(event) {
   console.log(event, event.keyCode, event.keyIdentifier);
} 
-1
source

All Articles