javascript – 如何在Angular 2中观察元素大小的变化

前端之家收集整理的这篇文章主要介绍了javascript – 如何在Angular 2中观察元素大小的变化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当模板中的div改变大小时,执行某些操作的最佳方法是什么?调整窗口大小时,div的大小会更改.使用Rxjs Observable / subscribe还是其他方式?

模板:

<div #eMainFrame class="main-frame">
   ...
</div>

零件:

@Component({
   selector: 'app-Box',templateUrl: './Box.component.html',styleUrls: ['./Box.component.css']
})
export class BoxComponent implements OnInit {
   @ViewChild('eMainFrame') eMainFrame : ElementRef;

   constructor(){}

   ngOnInit(){
     // This shows the elements current size
     console.log(this.eMainFrame.nativeElement.offsetWidth);
   }
}

更新的组件(此示例检测窗口大小何时更改)

constructor(ngZone: NgZone) { 

   window.onresize = (e) => {
     ngZone.run(() => {
       clearTimeout(this.timerWindowResize);
       this.timerWindowResize = setTimeout(this._calculateDivSize,100);
     });
   }
}

_calculateDivSize(){
   console.log(this.eMainFrame.nativeElement.offsetWidth); 
}

但这给了我一个错误

EXCEPTION: Cannot read property ‘nativeElement’ of undefined

解决方法

浏览器不提供任何内容,因此您需要轮询该值

当Angular运行更改检测时,将调用ngDoCheck().我认为这是一个检查的好地方:

ngDoCheck() {
  console.log(this.eMainFrame.nativeElement.offsetWidth);
}

如果您只需要在创建组件后检查一次,请使用

ngAfterContentInit(){
  // This shows the elements current size
  console.log(this.eMainFrame.nativeElement.offsetWidth);
}
原文链接:https://www.f2er.com/js/158279.html

猜你在找的JavaScript相关文章