我认为如果没有 PrimeNG 修改它们的组件以在下拉组件上添加滚动方法,或者更好的是,在下拉菜单打开时决定是否应自动滚动所选项目的属性,我认为无论如何都无法解决此问题。(或者也许它甚至应该一直这样做,比如非虚拟模式)
解释
使用ViewChild
(say on componentA
) (即使forwardRef
像你一样)永远不会起作用,因为它只能从componentA
的模板(包含下拉菜单的模板)访问直接子组件,但它不能从子组件的模板(即PrimeNG 下拉组件本身)。
使用相同的东西ContentChild
,这是设计使然
您在示例中得到的是一个祖父组件 ( AppComponent
)、一个子组件 ( Dropdown
) 和一个孙子组件 ( CdkVirtualScrollViewport
)。
SO 从祖父组件访问孙子组件的大多数答案表明:
@ViewChild(GrandChildComponent) grandChild
在子组件中添加一个
@ViewChild(ChildComponent) child
在祖父组件中添加一个
- 来自祖父母,
this.child.grandChild
用于访问孙子
但这在这里不起作用,因为子组件是您无法控制的第 3 方组件。所以这就是为什么我认为最好是建议对 PrimeNG 进行改进