Angular 2 - 有什么方法可以在调整大小时完全重新初始化组件 window?
Angular 2 - is there any way to completely re-initialize a component upon resize window?
我有一个组件ComponentA。对不同的设备有一些 dom 操作。当浏览器调整大小时,我不想为每台设备修复它们。
这就是为什么我想再次重新初始化整个组件。有什么办法吗?
或任何其他解决方案都会非常有帮助。
提前谢谢你。 :)
如果正确理解了您的问题,那么您可以将下一个方法添加到您的组件中:
@HostListener('window:resize', ['$event'])
onResize(event) {
// event.target.screen.width is the current screen size
// you can reinit your component here
}
已更新。
捕获 window 调整大小事件的另一种方法是
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();
});
无法以编程方式销毁或重新初始化 Angular 中的组件。如果没有更多变量或 DOM 个元素引用它,组件将自动销毁。
编辑:为了解决您的问题,我建议您查看 nikolayandr 发布的代码。
我有一个组件ComponentA。对不同的设备有一些 dom 操作。当浏览器调整大小时,我不想为每台设备修复它们。
这就是为什么我想再次重新初始化整个组件。有什么办法吗?
或任何其他解决方案都会非常有帮助。
提前谢谢你。 :)
如果正确理解了您的问题,那么您可以将下一个方法添加到您的组件中:
@HostListener('window:resize', ['$event'])
onResize(event) {
// event.target.screen.width is the current screen size
// you can reinit your component here
}
已更新。 捕获 window 调整大小事件的另一种方法是
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();
});
无法以编程方式销毁或重新初始化 Angular 中的组件。如果没有更多变量或 DOM 个元素引用它,组件将自动销毁。
编辑:为了解决您的问题,我建议您查看 nikolayandr 发布的代码。