Je sais que si nous sommes en développement, Angular exécute deux fois la détection des changements. Dans l'exemple suivant, Angular lance la détection des changements quatre fois. Pourquoi cela se produit-il ?
class Category {
constructor( private _id ) {
}
get id() {
console.log('id');
return this._id;
}
}
@Component({
selector: 'app-select',
template: `
<select class="form-control">
<option *ngFor="let option of options;" [value]="option.id">{{option.id}}</option>
</select>
`,
})
export class SelectComponent {
@Input() options;
}
@Component({
selector: 'my-app',
template: `
<app-select [options]="options"></app-select>
`,
})
export class App {
options = [new Category(1)]
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App, SelectComponent ],
bootstrap: [ App ]
})
export class AppModule {}
Si vous exécutez le code ci-dessus, vous verrez que le journal de la console s'exécute huit fois au lieu de quatre.