0

我有一个 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,但同样的错误不断出现。

4

0 回答 0