Угловой 4 - Как применить визуализированную высоту div к другому div?

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

Теперь проблема в том, что после изменения свойства высота, которую я получаю из ElementRef, соответствующего первому шаблону, не является обновленной высотой. Возвращает высоту div перед изменением свойства и повторным рендерингом.

Я хочу иметь возможность получить фактическую визуализированную высоту после обновления div. Что я делаю неправильно?

Обновить:

Код:

var height = `${this.profile.nativeElement.offsetHeight}px`;
this.renderer.setStyle(this.board.nativeElement, "height", height);
this.renderer.setStyle(
this.board.nativeElement,
"overflow-y",
"scroll"
);

Здесь профиль - это ElementRef, соответствующий первому div, и доска ElementRef второго. После изменения свойства я вызываю функцию, содержащую приведенный выше код. Тогда высота, которую я получаю, - это старая высота div, то есть до изменения свойства и повторного рендеринга.

1 ответ

Получите доступ к ElementRef, соответствующему каждому div, используя @ViewChild:

@ViewChild("profile") profile;
@ViewChild("board") board;

Реализуйте AfterViewChecked и выполните следующие действия в ngAfterViewChecked:

ngAfterViewChecked() {
  if (this.profile && this.board) {
    var height = `${this.profile.nativeElement.offsetHeight}px`;
    this.renderer.setStyle(this.board.nativeElement, "height", height);
  }
}

рендер это Renderer2, доступный в @angular/core

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