我有一个 Auth 组件。该组件使用mat-tab-group
具有两个mat-tab
组件的组件,可让您轻松地在登录和注册之间返回和第四个组件。登录位于索引 0(第一个显示的表单)处,注册位于索引 1(第二个显示的表单)。当用户尝试使用已经存在的用户名注册时,后端的验证失败,我想将用户带回“注册”而不是默认的第一个用户名,即“登录”。更改选项卡时,我将上次查看的选项卡存储在 localStorage 中。
我有一个onTabChange
事件处理程序
`onTabChange(event: MatTabChangeEvent){
console.log("Change tab event: ", event);
if(event.tab.textLabel.toLocaleLowerCase() == "sign up"){
localStorage.setItem("selectedTab", event.index.toString());
window.history.replaceState({}, '', '/signup')
console.log(this.tabs);
}
if(event.tab.textLabel.toLocaleLowerCase() == 'login'){
localStorage.setItem("selectedTab", event.index.toString());
window.history.replaceState({}, '', '/login')
}
}`
我把这段代码放在哪里并不重要:
`const activeTabIndex = parseInt(localStorage.getItem('selectedTab'));
this.selected.setValue(activeTabIndex);`
我总是收到 ExpressionChangedAfterItHasBeenCheckedError。但这真的让我感到困惑,因为我的代码在构造函数中?
我已经尝试在生命周期钩子中添加ChangeDetectorRef
并添加该detectChanges();
行ngAfterContentInit
,但同样的错误不断出现。