html - 如何在 Angular 中为自定义组件实现伪事件?
问题描述
我有一个自定义组件,其中包含一个输入和一个像这样的按钮
<div class="input-group">
<input type="text" class="form-control form-control-sm"
(input)="change($event)"
ngbDatepicker #d="ngbDatepicker" required
#datef />
<div class="input-group-append">
<button type="button" class="btn btn-sm btn-success" (click)="d.toggle()" type="button">
<i class="fa fa-calendar"></i>
</button>
</div>
</div>
我希望它具有一些功能,因此当用户在输入上按 Enter 时,它应该发出一个伪事件
<custom-datepicker (keyup.enter)="handleKeyboard($event)"></custom-datepicker>
我已经尝试过使用@HostListener,但是我收到了关于递归过多的错误,请帮帮我
解决方案
您可以简单地使用事件发射器的概念,其中您可以从自定义组件向父组件发出事件
----自定义组件Html----
<div class="input-group">
<input type="text" class="form-control form-control-sm"
(input)="change($event)"
ngbDatepicker #d="ngbDatepicker" required
#datef />
<div class="input-group-append">
<button type="button" class="btn btn-sm btn-success" (click)="d.toggle()" type="button">
<i class="fa fa-calendar"></i>
</button>
</div>
----自定义组件 ts----
@Output()
customEvent = new EventEmitter();
change(event) {
this.customEvent.emit();
}
----父组件----
<custom-datepicker (customEvent)="handleKeyboard($event)"></custom-datepicker>
推荐阅读
- sql - Median of three columns (for each row) in Vertica SQL
- javascript - 如何更改 svg (
) 高度? - vim - VIM 中的插件和插件管理器
- python - 使用 Python 读取存储在 HDFS 中的二进制文件
- dns - anyconnect Cisco VPN DNS 问题
- marklogic - XDMP-UNDFUN: (err:XPST0017) MarkLogic 10 中未定义的函数 op:join-full-outer()
- c - 错误:函数“rl_replace_line”的隐式声明在 C99 中无效 [-Werror,-Wimplicit-function-declaration]
- node.js - 如何设置 webhook 以进行传输
- db2 - 从 DB2 到等效雪花的函数转换
- javascript - JavaScript 中的触发器