Angular 4 - 如何将一个 div 的渲染高度应用于另一个 div?

标签 angular elementref

我有两个命名模板。每当第一个内容发生变化时,我想将第一个高度应用到第二个高度。我可以使用组件内的 ElementRef 访问它们。因此,当我更改绑定(bind)到第一个模板的属性时,我使用相应的 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"
);

这里profile是对应于第一个div的ElementRef,board是对应于第二个div的ElementRef。属性更改后,我调用包含上述代码的函数。那么我得到的高度就是div旧的高度,也就是属性改变重新渲染之前的高度。

最佳答案

使用@ViewChild访问每个div对应的ElementRef:

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

实现AfterViewChecked并在ngAfterViewChecked中执行以下操作:

constructor(private renderer: Renderer2) { 
}

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

渲染器Renderer2,可在@angular/core

中使用

关于Angular 4 - 如何将一个 div 的渲染高度应用于另一个 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49356019/

相关文章:

scrollview - 如何修复在 NativeScript Angular 中未定义的 @ViewChild ElementRef?

angular - 在 anchor 元素上设置(单击)属性

Angular Material 扩展面板 : Multiple expand

javascript - 如何选择 *ngIf 渲染的动态元素

angular - 奇怪的 NativeScript/Angular2 问题,应用程序在错误的位置查找模板

angular - Angular 2 中 Renderer 和 ElementRef 之间的区别

javascript - 运行 ngserve Angular5 时出错

angular - 如何在 Angular 5 中的指令上使用 exportAs 以在模板中获取其引用?

jquery.val() 更改了 Angular 10 输入值绑定(bind)

angular-directive - 无法在 Ionic 4 中获取 ion-textarea 的 nativeElement 来设置高度