我知道,如果我們在發展角度運行變化檢測兩次。在以下示例中,Angular運行更改四次檢測。這是爲什麼發生?角度變化檢測運行八倍而不是四個
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 {}
如果您運行上面的代碼,您將看到控制檯日誌運行八次而不是四次。
變化檢測運行多次第一次啓動時,角度運行'app.tick'兩次 –
需要每個異步任務 – yurzui
所以它應該console.log四次,而不是八次。 – ng2user