У меня есть три очень похожих пользовательских выпадающих компонента:
- базовый выпадающий список
- выпадающий-с-поиска
- выпадающая-с-поиск продвинутого
У них много общего поведения, но также у них и другое. Я решил разделить их на три разных компонента, потому что когда это был один большой компонент с 20 @Input()
свойствами и множеством if else
для выбора того или иного поведения, это было ужасно. Также у них есть идентичные выпадающие опции. Таким образом, единственное отличие - это ввод (header, idk, как это правильно назвать) и обработчики нажатия кнопок.
Вот упрощенный пример
Итак, у меня есть setDropdownPosition()
метод в base-dropdown
компоненте. Он вычисляет, где раскрывающийся список должен быть открыт - выше или ниже ввода. В dropdown-witch-search
компоненте у меня есть доступ к родительскому методу, например toggleOptions()
или setDropdownPosition()
. Но у меня нет доступа к родителю @ViewChild('dropdownContainer') dropdownContainer: ElementRef;
, чтобы разместить его в расширенном компоненте. И setDropdownPosition()
выдает ошибку. Раньше у меня был собственный шаблон в каждом компоненте (и он работает), но в каждом шаблоне было много повторяющихся вещей, как я упоминал ранее - опции и т. Д.
Как лучше всего решить эту проблему? Спасибо