Предотвращение href от onclick внутри компонента - PullRequest
0 голосов
/ 31 октября 2019

В моем проекте я пытаюсь создать пользовательский якорный компонент для централизации стилей (значки и тому подобное). Обычно это оболочка для <a href>.

. В некоторых ситуациях мне нужно привязать событие (click) к другому или дополнительному поведению. Возвращая false в событии click якорей, вы можете запретить браузеру следовать href. Это означает, что мой щелчок будет срабатывать при обычном щелчке или касании, но после использования средней кнопки мыши или ctrl + щелкните .

у меня естьПонятия не имею, как этого добиться, когда якорь находится внутри компонента .

Мне бы пришлось выставлять событие click наружу, используя генератор событий @Output(), но это не позволяет вамдля возврата значения (false).
Другой вариант - связать функцию как свойство @Input(), но тогда передача аргументов в вызов становится проблематичной. Привязка будет [clicked]="open", а не (clicked)="open($event, args)", не оставляя места для аргументов.

То, что я пытаюсь выполнить, будет выглядеть примерно так:

SomeGridComponent

<!-- let-row="row" -->
<app-href [href]="openHref(row)" (click)="open($event, row)"></app-button>
open(evt: MouseEvent, row: IRowData): boolean {
  if (/* some condition */ true) {
    // do stuff
    return false;
  }
}

HrefComponent

<a [href]="href" (click)="hrefClicked($event)">
  <ng-content></ng-content>
</a>
@Output() click = new EventEmitter<MouseEvent>();

hrefClicked(data: MouseEvent): void {
  // return this.click.emit(data);
  this.click.emit(data);
}

Любые предложения приветствуются!

...