ExpressionChangedAfterItHasBeenCheckedError при попытке установить последний активный MatTab? - PullRequest
0 голосов
/ 24 марта 2019

У меня есть компонент 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, но та же ошибка продолжает появляться.

...