【发布时间】:2019-08-10 20:20:06
【问题描述】:
我正在尝试找出某个元素是否在 Angular 指令中被禁用。
到目前为止,我正在尝试使用主机侦听器,但没有成功
指令:
@HostBinding('attr.disabled') isDisabled : boolean;
@HostListener("disabled") disabled() {
if(this.isDisabled) {
// do some action
}
}
setter 对我有用
@Input('disabled')
set disabled(val: string) {
if(val) {
this.elementRef.nativeElement.setAttribute('disabled', val);
} else {
this.elementRef.nativeElement.removeAttribute('disabled');
}
}
但我不想使用setter,因为我正在开发的指令不需要启用和禁用按钮,它只监听禁用属性的变化。
我希望它是通用的禁用逻辑。
【问题讨论】:
-
@HostListener正在监听 事件,没有disabled事件。请澄清你的问题。如果你真的需要监听 DOM 变化,你可能不得不使用MutationObserverdeveloper.mozilla.org/en-US/docs/Web/API/MutationObserver -
@Dimanoid 我想监听禁用的属性变化
-
好吧,那么我认为
MutationObserver是你唯一的选择。 -
@Dimanoid 如果你能发布答案我会接受它,你能帮我突变观察者吗
标签: angular angular2-directives