检查组件上是否有输出

问题描述 投票:3回答:1

考虑以下组件:

@Component({
  selector: 'app-test'
  template: 'Hello!'
}}
export class TestComponent {
  @Output() readonly selectionChange = new EventEmitter<SomeTypeHere>();
}

与通话:

<app-test (selectedChange)="selectedChangeHandler($event)"></app-test>

注意,我写的是selectedChange,而不是正确的输出名称selectionChange。启用了strictTemplates标志的Angular 9完全没有帮助我。它无声地失败了。有趣的是,如果我对@Input执行相同的操作,则应用程序会捕获错误并且无法编译。

如果我尝试“侦听”不存在的@Output,有什么办法引发错误?

angular angular-directive
1个回答
0
投票

没有抛出错误,因为不仅在@OutputEventEmitter中使用了Angular中的事件绑定,而且还侦听了clickkeyup等DOM事件。甚至可以用来收听自定义事件。例如,如果您在子组件中创建并发出自定义事件:

constructor (private el: ElementRef) {}
ngOnInit(): void {
    const domEvent = new CustomEvent('selectedChange', { custom: true });
    this.el.nativeElement.dispatchEvent(domEvent);
}
© www.soinside.com 2019 - 2024. All rights reserved.