📜  如何获得同级div的高度并将数据发送到Angular中的同级组件?(1)

📅  最后修改于: 2023-12-03 14:53:16.472000             🧑  作者: Mango

如何获得同级div的高度并将数据发送到Angular中的同级组件?

在开发Web应用程序时,我们经常需要获取DOM元素的高度并将其传递给Angular组件。本文将介绍如何使用JavaScript和Angular来实现此功能。

获取同级div的高度

要获取同级div的高度,我们可以使用JavaScript中的 offsetHeight 属性。这将返回元素的高度,包括内边距和边框,但不包括外边距。例如,以下代码将返回ID为"myDiv"的div的高度:

var myDiv = document.getElementById("myDiv");
var height = myDiv.offsetHeight;

请注意,这将只返回单个元素的高度。如果您需要获取多个元素的高度,则需要使用循环。

在Angular中发送数据

要在Angular中将数据发送到同级组件,我们可以使用 @Output 装饰器。这将允许我们在组件之间进行通信,并传递数据。以下是如何在同级组件之间传递高度数据的示例代码:

@Component({
  selector: 'app-child',
  template: '<div>{{ height }}</div>'
})
export class ChildComponent {
  @Input() height: number;
}

@Component({
  selector: 'app-parent',
  template: '<div #myDiv (click)="onDivClick()"><app-child [height]="height"></app-child></div>'
})
export class ParentComponent {
  @ViewChild('myDiv') myDiv: ElementRef;
  @Output() heightChanged = new EventEmitter<number>();
  height: number;

  onDivClick(): void {
    this.height = this.myDiv.nativeElement.offsetHeight;
    this.heightChanged.emit(this.height);
  }
}

在此示例中,我们有两个组件:ChildComponentParentComponentParentComponent 包含一个具有 #myDiv 视图子组件的div。当这个div被点击时,ParentComponent 使用 ViewChild 装饰器获取 #myDiv 元素的引用,并使用 offsetHeight 属性来获取它的高度。然后,它将高度数据发送给 ChildComponent,并使用 EventEmitter 发送 heightChanged 事件。在 ChildComponent中,高度数据被接收并显示在div中。

总结

在本文中,我们介绍了如何使用JavaScript和Angular来获取同级div的高度并将数据发送到同级组件。要获取div的高度,我们使用JavaScript中的 offsetHeight 属性。要在Angular中发送数据,我们使用 @Output 装饰器和 EventEmitter 来将数据从父组件传递到子组件。