Angular 2 - 有没有办法在调整大小窗口时完全重新初始化组件?

时间:2018-02-06 19:57:27

标签: javascript angular angular2-components

我有一个组件ComponentA。对于不同的设备有一些dom操纵。当浏览器调整大小时,我不想为每台设备修复它们。

这就是为什么我想重新初始化整个组件的原因。有没有办法做到这一点?

或任何其他解决方案将非常有用。

提前谢谢你。 :)

2 个答案:

答案 0 :(得分:0)

如果正确理解了您的问题,那么您可以只为组件添加下一个方法:

  @HostListener('window:resize', ['$event'])
  onResize(event) {
    // event.target.screen.width is the current screen size
    // you can reinit your component here
  }

更新。 另一种捕获窗口大小调整事件的方法是

import {FromEventObservable} from 'rxjs/observable/FromEventObservable';
import {debounceTime} from 'rxjs/operators';

 initOnWindowResize() {

    FromEventObservable.create(window, 'resize')
      .pipe(
        debounceTime(500)
      )
      .subscribe((event: any) => {
        // Do something here
      });
   }

ngOnInit(): void {
        this.initOnWindowResize();
       });

答案 1 :(得分:0)

无法以编程方式破坏或重新初始化Angular中的组件。如果没有更多的变量或DOM元素引用它,组件将自动销毁。

编辑:为了解决您的问题,我建议您查看代码nikolayandr发布。