我的组件具有取决于当前日期时间的样式。在我的组件中,我有以下功能。
private fontColor( dto : Dto ) : string { // date d'exécution du dto let dtoDate : Date = new Date( dto.LastExecution ); (...) let color = "hsl( " + hue + ", 80%, " + (maxLigness - lightnessAmp) + "%)"; return color; }
lightnessAmp从当前日期时间计算。如果dtoDate在过去 24 小时内,颜色会发生变化。
lightnessAmp
dtoDate
确切的错误如下:
检查后表达式已更改。以前的值:’hsl(123, 80%, 49%)’。当前值:’hsl(123, 80%, 48%)’
我知道只有在检查值时才会在开发模式下出现异常。如果检查的值与更新的值不同,则抛出异常。
所以我尝试在下面的钩子方法中更新每个生命周期的当前日期时间,以防止出现异常:
ngAfterViewChecked() { console.log( "! changement de la date du composant !" ); this.dateNow = new Date(); }
…但没有成功。
更改后显式运行更改检测:
import { ChangeDetectorRef } from '@angular/core'; constructor(private cdRef:ChangeDetectorRef) {} ngAfterViewChecked() { console.log( "! changement de la date du composant !" ); this.dateNow = new Date(); this.cdRef.detectChanges(); }