0

I am very beginner in Angular.

export class CountComponent implements OnInit {

  public no:number;

  constructor() { 
     this.no=0;
  }

  public myfun():void{
     this.no++;
     alert(this.no);
  }

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

when I run the above code, alert() is popup only once. Which means ngOnInit() only executes once. But

export class CountComponent implements OnInit {
  public no:number;

  constructor() { 
    this.no=0;
  }

  public myfun():void{
      setInterval(()=>{
        this.no++;
        alert(this.no);
      },1000);
  }
 
  ngOnInit(): void {
    this.myfun();
  }
}

when I run above code, alert() popups repeatedly. Which means ngOnInit() executes multiple times continuously (or myfun() executes multiple times).

so my problem is why does ngOnInit() execute multiple times instead of once, when I add setInterval() in myfun() ?

please give me full explanation & forgive me if this question is already asked.

Mohamed Arshad
  • 89
  • 1
  • 1
  • 6
  • 1
    maybe you wanted to use `setTimeout` istead of `setInterval` ? ngOnInit is called 1 time. problem is in the logic – Andrei Jan 06 '21 at 16:52
  • yeah maybe `setTimeout` makes `ngOnInit` execute once. But please explain me why `setInterval` makes `ngOnInit` execute multiple times?. I am searching for the reason – Mohamed Arshad Jan 06 '21 at 17:05
  • It doesn’t execute ngOninit multiple times.. it executes the callback in setInterval multiple times.. maybe you should read up on what setInterval is..? – MikeOne Jan 06 '21 at 17:17

1 Answers1

0

1000 = 1 seg, try to increase the value