我正在尝试在ngOnInit中调用事件的方法。
export class AppComponent {
currentMinute;addedMinute;mousemove
constructor(private datePipe: DatePipe){ }
@HostListener('document:mousemove',['event'])
mouse(e){
this.currentMinute=new Date().getMinutes();
this.addedMinute=new Date().getMinutes()+2;
}
ngOnInit(){
//here i want to display this.currentMinute
}
就像我尝试过的那样,但是它给出了不确定的信息。如何在ngOnInit中调用事件方法。
答案 0 :(得分:0)
您不能可靠地执行此操作。创建组件后,将设置事件侦听器(@HostListener
),框架将调用ngOnInit
。侦听器将仅对您指定的事件(在您的情况下为document:mousemove
)作出反应。如果需要此值,则需要在组件创建(调用构造函数)和调用ngOnInit
之间触发该事件,正如我所解释的,此事件之后立即称为立即。这几乎是不可能的。
对于您来说,解决方法非常简单:只需在ngOnInit
中进行与在@HostListener
中相同的工作即可:
export class AppComponent {
public currentMinute:number;
public addedMinute:number;
constructor(private datePipe: DatePipe){ }
@HostListener('document:mousemove',['event'])
public mouse(e):void {
this.setDates();
}
public ngOnInit():void {
this.setDates();
// Here this.currentMinute and this.addedMinute are defined now
}
private setDates():void {
this.currentMinute=new Date().getMinutes();
this.addedMinute=new Date().getMinutes()+2;
}
}