Раскрывающийся список PrimeNG с виртуальной прокруткой, не отображающий выбор - PullRequest
0 голосов
/ 04 февраля 2019

Я использую раскрывающийся компонент PrimeNG с настраиваемой фильтрацией и включенной виртуальной прокруткой.

Я обнаружил, что компонент не прокручивает назад к последнему выбору, сделанному в списке элементов в представлениикогда он снова открывается, вместо этого он просто прокручивается назад к началу списка, что означает, что вам нужно физически прокрутить, чтобы найти сделанный выбор.

См. этот пример stackblitz

Я наткнулся на решение здесь , которое говорит о вызове scrollToIndex для экземпляра CdkVirtualScrollViewport, который звучит так, как будто он может быть полезен для меня.Но когда я попытался включить это в свой код, моя переменная экземпляра оказалась неопределенной.

Кто-нибудь знает, какой здесь правильный подход?Я использую PrimeNG 7.1.3.

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Это связано с этой проблемой , которая была решена в версии 8.0.1 с этим PR .Поэтому обновите primeng для решения этой проблемы.

Я также открыл еще одну проблему , в которой изложены дальнейшие проблемы, связанные с сохранением выбранного элемента, и предложил fix PR ,когда этот PR объединен, все проблемы, чтобы сохранить выбор в поле зрения, будут решены.

0 голосов
/ 04 июля 2019

Я не думаю, что в любом случае можно решить эту проблему, если PrimeNG не изменит свои компоненты, добавив метод прокрутки к раскрывающемуся компоненту или, что еще лучше, свойство, определяющее, будет ли выбранный элемент автоматически прокручиваться до открытия раскрывающегося списка.(Или, может быть, это всегда нужно делать, как в не виртуальном режиме)

Пояснение

Использование ViewChild (скажем, на componentA) (даже сforwardRef, как вы это сделали) никогда не будет работать, так как он может получить доступ только к прямым дочерним компонентам из шаблона componentA (тот, который содержит раскрывающийся список), но он не может получить доступ к дочерним элементам из шаблона дочернего компонента (т. Е. Раскрывающегося списка PrimeNG)сам компонент).

То же самое, используя ContentChild, и это design

В вашем примере есть компонент прародителя (AppComponent), потомок (Dropdown) и внучатый ребенок (CdkVirtualScrollViewport).

Большинство ответов SO для доступа к внучатому компоненту из великого родительского компонента предлагают:

  • add @ViewChild(GrandChildComponent) grandChildв дочернем компоненте
  • добавьте @ViewChild(ChildComponent) child в компоненте дедушки
  • от деда, используя this.child.grandChild для доступа к внуку

Но это не будетработать здесь, поскольку дочерний компонент является сторонним компонентом, над которым у вас нет контроля.Вот почему я думаю, что лучше, если вы предложите это улучшение PrimeNG

...