angular2 получить elementRef компонента, который не является дочерним

В моем приложении у меня есть следующая структура:

<fin-header></fin-header>
<main></main>
<fin-footer></fin-footer>

В заголовке я хочу добавить прокрутку к определенному компоненту main, Мой метод прокрутки принимает в качестве аргумента elementRef, Но я не могу получить один по @ViewChild потому что компоненты main не дети заголовка.

Есть ли шанс получить elementRef компонента, который не является дочерним?

2 ответа

Возможно, вы могли бы немного изменить свою структуру и встроить свои компоненты в родительский. Что-то вроде:

<parent>
  <fin-header [elementRef]="mainRef"></fin-header>
  <main></main>
  <fin-footer></fin-footer>
<parent>

Таким образом родитель может передать ссылку своего дочернего элемента (main) другому дочернему элементу (header).

Вы можете получить main elementRef и использовать nativeElement.parentElement чтобы получить родителя и сделать еще один запрос на DOM от родителя. например, если структура выглядит примерно так:

<div>
  <fin-header></fin-header>
  <main></main>
  <fin-footer></fin-footer>
</div>

Получение main"s elementRefnativeElement.parentElement будет div. и, конечно же, div.querySelectorAll будет иметь всех детей div.

Другие вопросы по тегам