如何使用打字稿在angular2中获得设备显示的高度和宽度?

时间:2016-10-06 06:15:21

标签: angular typescript

我找到了这个解决方案。它有效吗?

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

@Component({...})
export MyApp {
constructor(platform: Platform) {
  platform.ready().then((readySource) => {
    console.log('Width: ' + platform.width());
    console.log('Height: ' + platform.height());
  });
 }
}

该溶液用于离子2。 我也可以用于角度2?

请建议我正确的方法。

5 个答案:

答案 0 :(得分:68)

对于那些想要获得设备高度和宽度的人,即使显示调整大小动态&实时):

  • 第1步:

在该组件中执行:var arr = ["john doe first", "robert way", "jason doe", "alex"]; var finalArray = [] for(var i = 0; i < arr.length; i ++) { arr[i].split(' ').forEach(function(item) {finalArray.push(item);}); } console.log(finalArray)

  • 第2步:

在组件的类体中写:

import { HostListener } from "@angular/core";
  • 第3步:

在组件的@HostListener('window:resize', ['$event']) onResize(event?) { this.screenHeight = window.innerHeight; this.screenWidth = window.innerWidth; } 中调用constructor方法,以初始化变量。另外,不要忘记先声明它们。

onResize

完整代码:

constructor() {
  this.onResize();
}    

答案 1 :(得分:36)

我找到了解决方案。答案很简单。在构造函数中编写以下代码。

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();
    }


}

======工作代码(另一个)======

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)
     }
}

答案 2 :(得分:27)

export class Dashboard {
    innerHeight: any;
    innerWidth: any;
    constructor(private router: Router, private http: Http) {
        this.innerHeight = (window.screen.height) + "px";
        this.innerWidth = (window.screen.width) + "px";
    }
}

答案 3 :(得分:7)

请记住,如果您想测试此组件,则需要注入窗口。使用@Inject()函数注入窗口对象,方法是使用字符串标记命名,如duplicate

中详述

答案 4 :(得分:6)

在这种情况下,您可以使用typescript getter方法。像这样

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

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

并在这样的模板中使用它:

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

打印值

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

您将不需要任何事件处理程序来检查窗口的大小,此方法将每次自动检查大小。