Angular 2媒体查询

时间:2016-06-28 17:58:51

标签: angular angular2-template angular2-services

我想知道Angular 2是否提供了一种确定客户端设备(大屏幕,中等或小屏幕)的方法,或者可能是基本上可以显示或隐藏某些内容的屏幕宽度(从dom中删除。)

2 个答案:

答案 0 :(得分:6)

<强> HostListener

一种方法是使用HostListener装饰器。当host元素发出指定的事件时,将调用trim方法。

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

通过ngZone

另一种方法是将ngZone导入您的组件。然后,您可以使用NgZone来检查onresize事件。

constructor(ngZone:NgZone) {
  window.onresize = (e) => {
    ngZone.run(() => {
        this.width = window.innerWidth;
        this.height = window.innerHeight;
    });
  };
}

之后,您可以使用[hidden]属性隐藏内容取决于 width height 值。

答案 1 :(得分:5)

无需使用NgZone。有更简单的方法来捕获调整大小窗口事件。

@HostListener('window:resize', ['$event'])
onResize(event) {
  const target = event.target;
  this.width = target.innerWidth;
  this.height = target.innerHeight;
}

或者如果你想从HTML中使用if

<div (window:resize)="onResize($event)"

onResize(event) {
  event.target.innerWidth;
}