我在Firefox中出現以下錯誤。不在Chrome或IE中。角度2更改檢測錯誤:檢查後表達式已更改。之前的值:'over'。當前值:'side'
"Error: Error in ./DefaultLayoutComponent class DefaultLayoutComponent - inline template:2:14 caused by: Expression has changed after it was checked. Previous value: 'over'. Current value: 'side'.」.
這是從材料設計拋出這個sidenav造型。
這裏是DefaultLayoutComponent HTML模板的第2行:
<md-sidenav (mouseover)="toggleHover(true)" (mouseout)="toggleHover(false)" (close)="sidenavToggle(false)" (open)="sidenavToggle(true)" [mode]="(_navigation.mediumScreenAndDown && sidenavStyle !== 'off') ? 'over':sidenavMode" [ngClass]="{'icon-sidenav': ((sidenavStyle === 'icon' || sidenavStyle === 'icon overlay') && _navigation.largeScreen), 'over': (sidenavStyle === 'icon overlay')}">
這裏是在DefaultLayoutComponent打字稿所述方法被調用,以確定sidenavStyle
public get sidenavMode(): string {
if(this.sidenavStyle === 'icon overlay' && this.isHovering) {
return 'over';
} else if(this.sidenavStyle === 'icon' || this.sidenavStyle === 'icon overlay') {
return 'side';
} else if(this.sidenavStyle === 'hidden') {
return 'over';
} else if(this.sidenavStyle === 'off') {
return 'over';
}
return this.sidenavStyle;
}
我已確定,這是一個變化檢測問題,我發現這個stackoverflow Angular 2 - Expression has changed after it was checked其中Gunter建議使用ngOnChanges,然後檢測這些更改,但我仍然拋出錯誤。
ngOnChanges() {
this.sidenavMode; //method where I am determining sidenav style
this.changeDetectorRef.detectChanges();
}
我試過這個,但我仍然在拋出錯誤。任何幫助不勝感激。
沒有試圖濫用任何人Arjan。我很抱歉我的報價困擾你,但他們是我的HTML的一部分。我想你在引用我的錯誤消息時遇到了問題。我將在未來嘗試更加註意這一點。希望你有一個愉快的一週。 –
我現在看到你在說什麼Arjan。謝謝。 –