我正在使用Angular 4并使用window.onresize来调整resize上的事件。在我加载医生组件之后,我在构造函数中编写了这个,但是没有触发。问题是我在点击医生超链接时将医生组件显示为侧面板。
我正在使用sneakPeak变量来显示和隐藏侧面板。
constructor(private router: Router) {
window.onresize = (e) =>
{
this.width = window.innerWidth;
if(this.width <= 1000 && this.sneakPeak) {
this.router.navigate(['/doctors']);
}
};
}
如果我将窗口调整到1000px(宽度)以下,我想重定向到医生页面。我怎么能这样做?
答案 0 :(得分:1)
您应该使用HostListener
中的@angular/core
来订阅DOM元素的事件。
@HostListener('window:resize', ['$event'])
onResize(event) {
if(event.target.innerWidth <= 1000 && this.sneakPeak) {
this.router.navigate(['/doctors']);
}
}
答案 1 :(得分:1)
我建议在模板中注册该事件。由于server side render
引用,这可能会导致window
出现问题。
//our root app component
import { Component, NgModule, VERSION} from '@angular/core'
import { BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'my-app',
template: `<div (window:resize)="onResize($event)">hello</div>`,
})
export class AppComponent {
onResize(event) {
const innerWidth = event.target.innerWidth;
console.log(innerWidth);
}
}
我尝试在这里分享一个plunker:http://plnkr.co/edit/CSZKfH?p=preview