如何在ngOnInit中调用事件方法

时间:2019-07-15 17:16:59

标签: angular

我正在尝试在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中调用事件方法。

1 个答案:

答案 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;
    }
}