[英]ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. with Ngclass on mat-tab-group
所以我想让mat-ink-bar
具有来自同一个mat-tab-group
的不同 colors 。 我正在使用本地参考和NgClass
。 styles 按预期工作,但在控制台中,它给了我这个
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'one. Current value: 'two'.
这是代码:
HTML:
<mat-tab-group
class="<some other classes>"
...
#tabGroup
[ngClass]="tabGroup.selectedIndex === 1 ? 'one' : 'two'"
>
SCSS:
.one.mat-primary .mat-ink-bar{
background: blue !important;
}
.two.mat-primary .mat-ink-bar{
background: red !important;
}
当我浏览 NgClass 上的其他帖子时,似乎真假值也在不断变化,那么我使用的方法为什么会给我这个错误? 是不是因为其他人选择在NgAfterViewChecked
或NgOnChanges
中更改变量,所以可以正确检测到更改?
谢谢!
这个问题来自这样一个事实,在选中[ngClass]
之后, selectedIndex
可能会在选项卡组内发生变化。 您需要手动收听(selectedTabChange)
并跟踪所选索引。
最短的代码示例:
<mat-tab-group
`(selectedTabChange)`="selectedTab = $event.index"
[ngClass]="selectedTab === 1 ? 'one' : 'two'"
>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.