Notes: This article was initially published at https://isamrish.com/how-to-apply-rendered-property-of-a-div-into-another-div/
Problem: how to apply rendered property of a div into another div
Sometimes we want to use the rendered property of an HTML element such as height, width, etc.. to set the property in another HTML element.
Solution: use ngAfterViewChecked lifecycle
This can be easily done in Angular using lifecycle hook ngAfterViewChecked
.
Here is the proper solution:
demo.component.html
<div #div1 class="div1"> <p>Div1</p> </div> <div #div2 class="div2"> <p>Div2</p> </div>
demo.component.css
.div1 { background-color: lightblue; height: 100px; } @media screen and (max-width: 767px) { .div1 { height: 500px; } } .div2 { background-color: lightgreen; }
demo.component.ts
import { Component, OnInit, ViewChild, Renderer2,AfterViewChecked, HostListener } from '@angular/core'; @Component({ selector: 'app-demo', templateUrl: './demo.component.html', styleUrls: ['./demo.component.css'] }) export class DemoComponent implements OnInit, AfterViewChecked { @ViewChild('div1') div1; @ViewChild('div2') div2; constructor(private renderer: Renderer2) { } ngOnInit() { } @HostListener('window:resize', []) onResize() { this.setDivHeight(); } ngAfterViewChecked() { this.setDivHeight(); } setDivHeight() { let height = `${this.div1.nativeElement.offsetHeight}px`; this.renderer.setStyle(this.div2.nativeElement, 'height', height); } }
Working Example
https://stackblitz.com/edit/set-rendered-height-of-div-to-another-div
I hope that you like the article.
Keep coding and keep learning and keep building stuffs..
Top comments (0)