Skip to content

How to make a selector for a directive with only an Output event #6394

@kasperpeulen

Description

@kasperpeulen

I have the following directive.

@Directive(selector: '[longpress]')
class LongPress {
  @Output() EventEmitter<KeyboardEvent> longpress =
      new EventEmitter<KeyboardEvent>();

  KeyboardEvent _startEvent;
  @Input() Duration longpressDelay = new Duration(milliseconds: 600);
  Timer timer;

  @HostListener("keydown", const [r"$event"])
  @HostListener("keyup", const [r"$event"])
  void keyEventHandler(KeyboardEvent event) {
    if (_startEvent == null ||
        _startEvent.type != event.type ||
        _startEvent.keyCode != event.keyCode) {
      if (timer != null) {
        timer.cancel();
      }
      _startEvent = event;
      timer = new Timer(longpressDelay, () {
        longpress.add(_startEvent);
        timer = null;
      });
    }
  }
}

I want it to use like:

<textarea (longpress)="onLongPress($event)">

But it seems angular forces me to use it like this:

<textarea longpress (longpress)="onLongPress($event)">

Which seems a bit awkward to me. Is there any selector for events?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions