Angular2 如何在组件代码中订阅事件?

标签 angular

我有一个带有 Output 事件的 [boolean] 指令:

@Output() booleanChanged = new EventEmitter();
...
this.booleanChanged.emit(value);

在我看来:

<input type="checkbox" [boolean] (booleanChanged)="updateBoolean()"/>

我想从组件的代码而不是在 View 中订阅此事件。

有办法吗?

最佳答案

@Output() 事件只能由 (myoutput)="..." 绑定(bind)使用。

您可以发出自定义 DOM 事件。 DOM 事件冒泡并且可以从父组件中监听

class BooleanDirective {
  constructor(private elRef:ElementRef){}

  emitEvent() {
    final event = new CustomEvent('mycustomevent', {detail: 'abc', bubbles : true});
    this.elRef.nativeElement.dispatchEvent(event)
  }
}
@HostListener('mycustomevent', ['$event'])
myCustomEventHandler(event) {
  ...
}

另见 angular2 manually firing click event on particular element

关于Angular2 如何在组件代码中订阅事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41844958/

相关文章:

javascript - 在javascript中将文字对象转换为特定类的对象

c# - 无法让 HTTP PUT 请求在 ASP.NET Core 中工作

Angular react 形式验证嵌套字段

angular - 在登录页面请求之前检查 session

angular - MatSort 显示了箭头,但实际上并没有对数据进行排序

angular - 将 NgRx 和 Angular 升级到版本 7 后无法编译

http - Angular2 服务只运行一次 http 方法

Angular - 捆绑时加载资源

angular - 尽管存在期望,但规范没有期望控制台错误

Angular 警告 "Warning:Can' t 解析所有参数...”