Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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) => {
			});
	}
}


Но сервис пуст. Данных нет. Ставил в конструктор сервиса лог и он выводится только один раз, т.е. я его не пересоздал где-нибудь.
Что я делаю не так? Как сохранить состояние приложения, передавая данные между компонентами?
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2018, 19:11
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

sniffysko,
Какие данные подгружаются в AuthService и откуда они берутся? Из приведенного кода - неясно. И что за мифический метод logout, который не описан в классе сервиса? Вообщем без запускаемого примера не разобраться, но задача очень проста.
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2018, 09:13
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

Вчера написал простой пример из 3-х компонент, передающих данные друг-другу через сервис. Все работает. Причина моего неработающего примера -- кривые руки. Буду разбираться.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setInterval, не меняет значение глобальная переменная. Javany11 Элементы интерфейса 8 04.03.2018 18:56
Динамическое создание iframe в Firefox mrbean11 Firefox/Mozilla 8 02.11.2012 21:23
.trigger() и глобальная переменная madicom jQuery 1 25.12.2011 17:53
Глобальная переменная vah-smile Общие вопросы Javascript 3 06.07.2010 12:41
Глобальная переменная и массив mikeles Events/DOM/Window 2 21.11.2009 18:37