Здравствуйте. Необходимо завести переменную, которая будет хранить изменяющееся состояние приложения. Везде советуют создавать сервис. Так и поступил.
auth.service
@Injectable()
export class AuthService {
private isAuth = false;
private authInfo: UserAuth = undefined;
private storage: string;
private siteUrl: string;
constructor(){
}
login(authData: {login: string, password: string}): Observable<any{
......initToken....
}
isLogin(): boolean{
return this.isAuth;
}
getToken(): string{
return this.authInfo.token;
}
}
Подключаем сервис
в app.module
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
AdminModule,
AppRoutingModule
],
providers: [
GlobalVars,
AuthService,
],
bootstrap: [AppComponent]
})
Вызываем инжектим сервис и вызываем его в компоненте
login.component:
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
constructor(
private authService: AuthService,
private router: Router
) { }
onSubmit(){
const authData = this.formLogin.value;
this.authService.login(authData)
.subscribe(
.......
);
}
Теперь захожу в компонент
portal.component и ожидаю при вызове logout увидеть там authServise с теми данными, которые подгрузились в прошлом компоненте.
@Component({
selector: 'app-portal',
templateUrl: './portal.component.html',
styleUrls: ['./portal.component.scss']
})
export class PortalComponent implements OnInit {
constructor(
private authServise: AuthService
) {}
logout() {
this.authServise.logout()
.map((data) => {
});
}
}
Но сервис пуст. Данных нет. Ставил в конструктор сервиса лог и он выводится только один раз, т.е. я его не пересоздал где-нибудь.
Что я делаю не так? Как сохранить состояние приложения, передавая данные между компонентами?