【问题标题】:How to disable custom event at library component?如何在库组件中禁用自定义事件?
【发布时间】:2019-12-25 10:16:41
【问题描述】:

ux-components 库中有一个切换器组件,它允许处理多个事件。其中一个事件处理程序称为onValueChange。 我想阻止默认行为并完全禁止该事件触发。

我尝试了一些js方法,比如preventDefault()。似乎它不适用于自定义事件。

这是我的具有onValueChange 事件的组件。

<ux-switcher-field 
  (onValueChange) = "someFunc()" >
</ux-switcher-field>

这是事件发射器:

@Output()
public onValueChange = new EventEmitter<UxValueChangeEvent<T>>();

正如我所说,我只想禁止该事件在某个特定位置触发。

【问题讨论】:

  • 那么您是否有权访问源并可以更改它们?
  • @ArtemArkhipov 是的,但该组件不是使用一次。所以我无法改变它
  • 你能传递一个 noop 函数给它吗?我认为结果将是相同的 - 对事件没有进一步的反应。
  • @ArtemArkhipov 似乎也不起作用。如果我理解正确 - noop 是一个空函数,对吧?

标签: javascript angular angular-components angular-event-emitter


【解决方案1】:

您可以使用$event.stopPropagation() 取消活动。

代码应如下所示:

<ux-switcher-field 
  (onValueChange) = "$event.stopPropagation()" >
</ux-switcher-field>

您可以在此处阅读有关 stopPropagation 的更多详细信息:

stopPropagation description

【讨论】:

  • 和 preventDefault() 一样的错误 - ERROR TypeError: $event.stopPropagation is not a function
【解决方案2】:

你可以在模板中像这样使用 event.preventDefault()

<ux-switcher-field 
  (onValueChange) = "$event.preventDefault()" >
</ux-switcher-field>

【讨论】:

  • 是的,我试过了。它根本不起作用。它似乎不适用于自定义事件
  • 我在一个小例子上尝试了类似的东西,它成功了
  • 它还会记录 ERROR TypeError: $event.preventDefault is not a function
  • 你能分享一个小堆栈闪电战的例子吗?这个例子和它对我有同样的问题
  • 我很愿意,真的。但它是产品的一部分,属于商业机密:(
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2011-11-12
相关资源
最近更新 更多