扩展 MatOption 以创建 select/deselect 所有组件

Extend MatOption to create select/deselect all component

我需要为 mat-selectselect/deselect 所有 元素创建一个 共享组件 因为我有经常使用它并经常执行相同工作的应用程序不是一个选项。

我已经阅读了很多选项,例如 , and I decide to create a component as one of the answers propose (look at https://stackblitz.com/edit/angular-select-all-option)

问题是 angular v10 似乎不起作用。如果我点击 Select All 按钮它不起作用,但是如果我点击一些选项然后我点击 Select All 它可以工作,但它没有按预期工作。代码在这里:

https://stackblitz.com/edit/select-all-option

项目之间的主要区别在于Ivy compiler。没有常春藤,它工作。

是否可以通过 Ivy compiler 实现?提前致谢

这与ivy如何处理监听器继承有关。 _selectViaInteraction 已在 MatOption 组件中调用,因为它还包含 click 主机侦听器。

尝试删除 select-all-option 中的 this._selectViaInteraction();。component.ts 第 23 行。

https://stackblitz.com/edit/select-all-option-dmcb4h?file=src/app/select-all-option/select-all-option.component.ts