Я пытаюсь предотвратить событие нажатия на отключенные кнопки, другими словами, не дать пользователю, который удаляет отключенный атрибут, вызвать какое-либо действие.
На данный момент, Для этого у меня есть следующий код:
Execute action
< /code>
executeAction(): void {
if (this.someCondition) return;
// ...
}
< /code>
Works, but it isn't a good solution as I have to do it for ALL buttons in my app (and believe me, it's easy to forgot to do this and even a Linter can't help me here).
Looking for a more robust solution, I thought that directive< /code> может помочь мне: < /p>
import { Directive, HostListener, Input, Renderer2, ElementRef } from '@angular/core';
@Directive({
selector: 'button'
})
export class ButtonDirective {
@Input() set disabled(value: boolean) {
this._disabled = value != null;
this.renderer2.setAttribute(this.elementRef.nativeElement, 'disabled', `${this._disabled}`);
}
private _disabled: boolean;
constructor(
private readonly elementRef: ElementRef,
private readonly renderer2: Renderer2
) { }
@HostListener('click', ['$event'])
onClick(mouseEvent: MouseEvent) {
// nothing here does what I'm expecting
if (this._disabled) {
mouseEvent.preventDefault();
mouseEvent.stopImmediatePropagation();
mouseEvent.stopPropagation();
return false; // just for test
}
}
}
< /code>
Execute action
< /code>
executeAction(): void {
console.log('still being called');
}
< /code>
...however it does absolutely nothing. It doesn't prevent the click событие. Есть ли какое-либо решение, при котором мне не нужно контролировать само действие при его вызове?
STACKBLITZ< /п>
Подробнее здесь: https://stackoverflow.com/questions/603 ... ed-buttons
Angular - предотвратить событие нажатия на кнопки отключений ⇐ Html
Программисты Html
-
Anonymous
1737773557
Anonymous
Я пытаюсь предотвратить событие нажатия на отключенные кнопки, другими словами, не дать пользователю, который удаляет отключенный атрибут, вызвать какое-либо действие.
На данный момент, Для этого у меня есть следующий код:
Execute action
< /code>
executeAction(): void {
if (this.someCondition) return;
// ...
}
< /code>
Works, but it isn't a good solution as I have to do it for ALL buttons in my app (and believe me, it's easy to forgot to do this and even a Linter can't help me here).
Looking for a more robust solution, I thought that directive< /code> может помочь мне: < /p>
import { Directive, HostListener, Input, Renderer2, ElementRef } from '@angular/core';
@Directive({
selector: 'button'
})
export class ButtonDirective {
@Input() set disabled(value: boolean) {
this._disabled = value != null;
this.renderer2.setAttribute(this.elementRef.nativeElement, 'disabled', `${this._disabled}`);
}
private _disabled: boolean;
constructor(
private readonly elementRef: ElementRef,
private readonly renderer2: Renderer2
) { }
@HostListener('click', ['$event'])
onClick(mouseEvent: MouseEvent) {
// nothing here does what I'm expecting
if (this._disabled) {
mouseEvent.preventDefault();
mouseEvent.stopImmediatePropagation();
mouseEvent.stopPropagation();
return false; // just for test
}
}
}
< /code>
Execute action
< /code>
executeAction(): void {
console.log('still being called');
}
< /code>
...however it does absolutely nothing. It doesn't prevent the click событие. Есть ли какое-либо решение, при котором мне не нужно контролировать само действие при его вызове?
[b]STACKBLITZ[/b]< /п>
Подробнее здесь: [url]https://stackoverflow.com/questions/60311882/angular-prevent-click-event-on-disabled-buttons[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия