Angular 在屏幕改变大小(以及页面加载后)时更新DOM

Angular 在屏幕改变大小(以及页面加载后)时更新DOM,angular,Angular,我试图根据屏幕是否具有一定的大小来渲染div。当页面最初加载时,我能够做到这一点,但是当页面加载后窗口大小改变时,我不知道如何做到这一点。我希望一个div可以是“mobile”div或“!mobile”div,具体取决于当前的屏幕大小 以下是my home.component.ts文件的相关代码: import { Component, OnInit, HostListener } from '@angular/core'; export class HomeComponent impleme

我试图根据屏幕是否具有一定的大小来渲染div。当页面最初加载时,我能够做到这一点,但是当页面加载后窗口大小改变时,我不知道如何做到这一点。我希望一个div可以是“mobile”div或“!mobile”div,具体取决于当前的屏幕大小

以下是my home.component.ts文件的相关代码:

import { Component, OnInit, HostListener } from '@angular/core';

export class HomeComponent implements OnInit {
  mobile: Boolean;
}

ngOnInit() {
    if (window.screen.width <= 615) {
      this.mobile = true;
    } else if (window.screen.width >= 616) {
      this.mobile = false;
    }

  @HostListener('window:resize', ['$event'])
  onResize(event) {
    if (event.target.innerWidth <= 767) {
      this.mobile = true;
      this.ngOnInit();
    } else if (event.target.innerWidth >= 768) {
      this.mobile = false;
      this.ngOnInit();
    }
  }
从'@angular/core'导入{Component,OnInit,HostListener};
导出类HomeComponent实现OnInit{
移动:布尔;
}
恩戈尼尼特(){
如果(window.screen.width=616){
this.mobile=false;
}
@HostListener('窗口:调整大小',['$event']))
onResize(事件){
if(event.target.innerWidth=768){
this.mobile=false;
这个;
}
}
下面是my home.component.html文件div:

<ngb-carousel (window:resize)="onResize($event) *ngIf="mobile">
     <!-- ...additional content within mobile div -->
</ngb-carousel>


 <div (window:resize)="onResize($event) *ngIf="!mobile" class="homepage-img-card row ml-5">
     <!-- ...additional content within non-mobile div -->
</div>

为什么不使用基于媒体查询的CSS规则?

样式表中的一些简单媒体查询规则应该更简单,不需要浏览器脚本引擎时间或角度
ngOnInit()
周期。请尝试以下操作:

/*CSS*/
ngb传送带{
显示:无;
}
.主页img卡{
显示:块;
}
@媒体屏幕和屏幕(最大宽度:767px){
ngb传送带{
显示:块;
}
.主页img卡{
显示:无;
}
}

然后您可以省去所有类型脚本。这些CSS规则就足够了,只要调整视口的大小,它们就会立即无缝地应用。

为什么不使用基于媒体查询的CSS规则?

样式表中的一些简单媒体查询规则应该更简单,不需要浏览器脚本引擎时间或角度
ngOnInit()
周期。请尝试以下操作:

/*CSS*/
ngb传送带{
显示:无;
}
.主页img卡{
显示:块;
}
@媒体屏幕和屏幕(最大宽度:767px){
ngb传送带{
显示:块;
}
.主页img卡{
显示:无;
}
}

然后,您可以省去所有类型脚本。这些CSS规则就足够了,只要调整视口的大小,就会立即无缝地应用这些规则。

这是否回答了您的问题?不要使用javascript,请使用。详细阅读这是否回答了您的问题?不要使用javascript,请使用。详细阅读,谢谢。是的,我想只为这个使用CSS会更有意义。太好了,谢谢。是的,我想只为这个使用CSS会更有意义。