I don't understand how *ngfor can run each time and output only the last added value in this example, can anyone explain to me please ?
If each time the Array Numbers get updated in the setinterval function, and there for it triggers the ngfor each time, isn't supposed to output the whole array every 1000 ms ?
And be like :
Number is - 0
Number is - 0
Number is - 1
Number is - 0
Number is - 1
Number is - 2
...
Instead the result is this :
Number is - 0
Number is - 1
Number is - 2
Number is - 3
...
Here is the app-root component TS
import {Component} from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
interval = 0;
lastNumber = 0;
Numbers:number[] = [];
TimeTick()
{
this.interval = setInterval(() =>
{
this.Numbers.push(this.lastNumber);
this.lastNumber++;
}, 1000)
}
}
Here is the app-root component HTML
<div class="container">
<div class="row">
<div class="col-xs-12">
<button class="btn btn-primary" (click)="TimeTick()">Start</button>
<app-loop-x *ngFor="let num of Numbers" [number]="num"></app-loop-x>
</div>
</div>
</div>
Here is the app-loop-x TS
import {Component, Input} from '@angular/core';
@Component({
selector: 'app-loop-x',
templateUrl: './loop-x.component.html',
styleUrls: ['./loop-x.component.css']
})
export class LoopXComponent {
@Input() number: number = 0;
}
Here is the app-loop-x HTML
<p>Number is - {{ number }}</p>