我创建了一个带有事件的组件,我们称之为(onAction)。在同一个父组件或页面中,它在两个地方使用(它们本身就是组件)。不同之处在于 ng-template 中使用了一个地方,该模板用于模态(确切地说是来自 angular - bootstrap4 库的 NgbModal)。
不在 ng-template 中的那个可以正常工作。但是,当触发 ng-template 内部的事件时,就好像它没有与 onActionB 绑定一样,并且该事件被其他组件捕获。
这是一些需要明确的通用代码,为简单起见,我们将其称为组件“comp”,以及使用它的两个父组件“parentA”和“parentB”
<parentA>
...
<comp (onAction)="onActionA($event)"></comp>
...
</parentA>
<parentB>
...
<ng-template #someModal>
<comp (onAction)="onActionB($event)"></comp>
</ng-template>
...
</parentB>
当 #someModal 被渲染时,就好像 (onAction) 与 parentA 中的 onActionA 绑定一样。它触发 onActionA($event) 而不是 onActionB($event)。奇怪的是,如果我注释掉 parentA 中的 comp,然后触发 parentB 中的 onActionB。