Список опций при щелчке правой кнопкой мыши называется контекстным меню. Есть несколько способов отключить его. Ответ, упомянутый ранее (oncontextmenu="return false;"
), является элегантным решением.
Однако, поскольку это вопрос, связанный с Angular, давайте напишем директиву атрибута:
import { Directive, HostListener } from '@angular/core';
@Directive({
selector: '[appDisableRightClick]'
})
export class DisableRightClickDirective {
@HostListener('contextmenu', ['$event']) onContextMenu($event: any) {
$event.preventDefault();
}
}
Теперь ее можно передать тегу привязки с помощью директивы [routerLink]
. Например,
<a routerLink="sample" appDisableRightClick>About</a>
StackBlitz
В приложении StackBlitz контекстное меню для ссылок «О программе» и «Услуги» отключено, а ссылка «Тестирование» не изменена. .
Объяснение : HostListener
decorator объявляет событие DOM для прослушивания и предоставляет метод для обработки события. Мы слушаем событие contextmenu
, которое обычно запускается при нажатии правой кнопки мыши или клавиши контекстного меню. В реализации вызывается метод события preventDefault()
, который сообщает браузеру, что его действие по умолчанию не должно выполняться, как обычно. Что в нашем случае запрещает открытие контекстного меню.
Приложение разветвлено с здесь .