How to get height and width of device display in angular2 using typescript?

后端 未结 5 606
猫巷女王i
猫巷女王i 2020-12-13 01:50

I found this solution. Is it valid?

import {Component} from \'@angular/core\';
import {Platform} from \'ionic-angular\';

@Component({...})
export MyApp {
co         


        
相关标签:
5条回答
  • 2020-12-13 02:23
    export class Dashboard {
        innerHeight: any;
        innerWidth: any;
        constructor() {
            this.innerHeight = (window.screen.height) + "px";
            this.innerWidth = (window.screen.width) + "px";
        }
    }
    
    0 讨论(0)
  • 2020-12-13 02:26

    For those who want to get height and width of device even when the display is resized (dynamically & in real-time):

    • Step 1:

    In that Component do: import { HostListener } from "@angular/core";

    • Step 2:

    In the component's class body write:

    @HostListener('window:resize', ['$event'])
    onResize(event?) {
       this.screenHeight = window.innerHeight;
       this.screenWidth = window.innerWidth;
    }
    
    • Step 3:

    In the component's constructor call the onResize method to initialize the variables. Also, don't forget to declare them first.

    constructor() {
      this.onResize();
    }    
    

    Complete code:

    import { Component, OnInit } from "@angular/core";
    import { HostListener } from "@angular/core";
    
    @Component({
      selector: "app-login",
      templateUrl: './login.component.html',
      styleUrls: ['./login.component.css']
    })
    
    export class FooComponent implements OnInit {
        screenHeight: number;
        screenWidth: number;
    
        constructor() {
            this.getScreenSize();
        }
    
        @HostListener('window:resize', ['$event'])
        getScreenSize(event?) {
              this.screenHeight = window.innerHeight;
              this.screenWidth = window.innerWidth;
              console.log(this.screenHeight, this.screenWidth);
        }
    
    }
    
    0 讨论(0)
  • 2020-12-13 02:32

    I found the solution. The answer is very simple. write the below code in your constructor.

    import { Component, OnInit, OnDestroy, Input } from "@angular/core";
    // Import this, and write at the top of your .ts file
    import { HostListener } from "@angular/core";
    
    @Component({
      selector: "app-login",
      templateUrl: './login.component.html',
      styleUrls: ['./login.component.css']
    })
    
    export class LoginComponent implements OnInit, OnDestroy {
        // Declare height and width variables
        scrHeight:any;
        scrWidth:any;
    
        @HostListener('window:resize', ['$event'])
        getScreenSize(event?) {
              this.scrHeight = window.innerHeight;
              this.scrWidth = window.innerWidth;
              console.log(this.scrHeight, this.scrWidth);
        }
    
        // Constructor
        constructor() {
            this.getScreenSize();
        }
    
    
    }
    

    ====== Working Code (Another) ======

    export class Dashboard  {
     mobHeight: any;
     mobWidth: any;
         constructor(private router:Router, private http: Http){
            this.mobHeight = (window.screen.height) + "px";
            this.mobWidth = (window.screen.width) + "px";
              console.log(this.mobHeight);
              console.log(this.mobWidth)
         }
    }
    
    0 讨论(0)
  • 2020-12-13 02:35

    Keep in mind if you are wanting to test this component you will want to inject the window. Use the @Inject() function to inject the window object by naming it using a string token like detailed in this duplicate

    0 讨论(0)
  • 2020-12-13 02:39

    You may use the typescript getter method for this scenario. Like this

    public get height() {
      return window.innerHeight;
    }
    
    public get width() {
      return window.innerWidth;
    }
    

    And use that in template like this:

    <section [ngClass]="{ 'desktop-view': width >= 768, 'mobile-view': width < 768 
    }"></section>
    

    Print the value

    console.log(this.height, this.width);
    

    You won't need any event handler to check for resizing of window, this method will check for size every time automatically.

    0 讨论(0)
提交回复
热议问题