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