Я не думаю, что в любом случае можно решить эту проблему, если PrimeNG не изменит свои компоненты, добавив метод прокрутки к раскрывающемуся компоненту или, что еще лучше, свойство, определяющее, будет ли выбранный элемент автоматически прокручиваться до открытия раскрывающегося списка.(Или, может быть, это всегда нужно делать, как в не виртуальном режиме)
Пояснение
Использование ViewChild
(скажем, на componentA
) (даже сforwardRef
, как вы это сделали) никогда не будет работать, так как он может получить доступ только к прямым дочерним компонентам из шаблона componentA
(тот, который содержит раскрывающийся список), но он не может получить доступ к дочерним элементам из шаблона дочернего компонента (т. Е. Раскрывающегося списка PrimeNG)сам компонент).
То же самое, используя ContentChild
, и это design
В вашем примере есть компонент прародителя (AppComponent
), потомок (Dropdown
) и внучатый ребенок (CdkVirtualScrollViewport
).
Большинство ответов SO для доступа к внучатому компоненту из великого родительского компонента предлагают:
- add
@ViewChild(GrandChildComponent) grandChild
в дочернем компоненте - добавьте
@ViewChild(ChildComponent) child
в компоненте дедушки - от деда, используя
this.child.grandChild
для доступа к внуку
Но это не будетработать здесь, поскольку дочерний компонент является сторонним компонентом, над которым у вас нет контроля.Вот почему я думаю, что лучше, если вы предложите это улучшение PrimeNG