Angular2 get window width onResize

Spencer Bigum picture Spencer Bigum · Feb 20, 2016 · Viewed 42k times · Source

Trying to figure out how to get window width on resizing events in Angular2. Here is my code:

export class SideNav {

    innerWidth: number;

    constructor(private window: Window){

        let getWindow = function(){
          return window.innerWidth;
        };

        window.onresize = function() {
          this.innerWidth = getWindow();
          console.log(getWindow());
        };
} 

I am importing window provider globally in the bootstrap.ts file using provide to gain access across my app to window. The problem I am having is this does give me a window size, but on resizing the window - it just repeats the same size over and over even if the window changes size. See image for console.log example: Screenshot image

My overall goal is to be able to set the window number to a variable onresize so I can have access to it in the template. Any ideas on what I am doing wrong here?

Thanks!

Answer

Günter Zöchbauer picture Günter Zöchbauer · Feb 20, 2016
<div (window:resize)="onResize($event)"
onResize(event) {
  event.target.innerWidth; 
}

to get notified on scroll events on a child element in a components template

or listen on the components host element itself

@HostListener('window:resize', ['$event'])
onResize(event) {
  event.target.innerWidth; 
}