Показать сообщение отдельно
  #1 (permalink)  
Старый 24.04.2018, 18:16
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

Глобальная переменная, которая хранит состояние приложения
Здравствуйте. Необходимо завести переменную, которая будет хранить изменяющееся состояние приложения. Везде советуют создавать сервис. Так и поступил.
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) => {
			});
	}
}


Но сервис пуст. Данных нет. Ставил в конструктор сервиса лог и он выводится только один раз, т.е. я его не пересоздал где-нибудь.
Что я делаю не так? Как сохранить состояние приложения, передавая данные между компонентами?
Ответить с цитированием