Angular 2媒体查询

Nav*_*med 7 angular2-template angular2-services angular

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

mue*_*ich 7

HostListener

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

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

通过ngZone

另一种方法是将ngZone导入组件.然后你可以NgZone用来检查onresize事件.

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

之后,您可以使用该[hidden]属性隐藏内容取决于您的宽度高度值.


mah*_*.cr 7

没有必要使用NgZone.有更简单的方法来捕获调整大小窗口事件.

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

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

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

onResize(event) {
  event.target.innerWidth;
}
Run Code Online (Sandbox Code Playgroud)