Я просмотрел несколько различных тем по этому вопросу, но все еще не нашел ничего, что мне подходит. Самая близкая вещь, которую я мог найти, кажется, давно устарела: go: https://github.com/angular/angular/issues/8277
По сути, я работаю с рядом сторонних компонентов, которые не Я не очень хорошо играю вместе, поэтому я решил написать директиву, которую я могу прикрепить к ней и обработать некоторые пользовательские логики c. Макет выглядит примерно так:
<splitter myDirective>
<split-panel>
<my-component-1>
<div>
<pivot-grid></pivot-grid>
</div>
</my-component-1>
</split-panel>
<split-panel>
<my-component-2>
<div>
<pivot-grid></pivot-grid>
</div>
</my-component-2>
</split-panel>
</splitter>
Разветвитель позволяет изменять размеры во время выполнения. В рамках моей директивы у меня есть доступ к компоненту сплиттера и его ElementRef
. В данный момент я рекурсивно копаю children
на ElementRef.nativeElement
, а затем устанавливаю высоту на моем PivotGridComponent
с помощью Renderer2
. Однако проблема заключается в том, что есть предостережение для сторонней организации PivotGridComponent
, в котором я должен установить свойство height
самого компонента или у меня нет полосы прокрутки.
Я пробовал @ViewChildren
, @ContentChildren
, @host() @self() @optional()
, и ни один из них не может схватить мой базовый PivotGridComponent
. Я бы просто поместил @ViewChildren
в сам компонент сплиттера, но это также сторонний компонент, так что это не вариант. Также не представляется возможным перемещаться по дереву компонентов так же, как я перемещаюсь по дереву ElementRef
.
Как я могу получить доступ к компоненту из директивы? Я предполагаю, что больше невозможно получить компонент из ElementRef
, как, по-видимому, указывает на указанную мной проблему GitHub.