СИТУАЦИЯ:
В моем приложении Ionic 2 у меня есть простой логин, форма которого содержится в правом меню. Вы нажимаете на значок справа в заголовке - появится меню с формой входа.
Код входа находится внутри app.component, а вид входа - app.html. Успешный логин установит логическую глобальную переменную - loginState - на true.
Цель состоит в том, что любой другой компонент, импортирующий глобальную переменную, может знать это состояние входа.
Проблема заключается в том, что после успешного входа в систему мне нужно, чтобы изменения сразу отражались на компоненте homePage, и это не так.
Например, на домашней странице, после входа в систему, сразу же становится доступным содержимое.
КОД:
Здесь я устанавливаю глобальную переменную в отдельный файл с именем global.ts, который затем импортирую в другие компоненты:
export var global = {
loginState : false
};
app.component
Это компонент приложения, в котором я импортирую глобальную переменную и устанавливаю ее в true после успешного входа в систему:
import {global} from "./global";
loginSubmit()
{
var email = this.loginForm.value.email.trim();
var password = this.loginForm.value.password.trim();
this.userService.submitLogin(email, password)
.subscribe((response) => {
if(response.result == 1)
{
global.loginState = true;
this.menu.close();
}
}, (error) => {
console.log(error);
});
}
ВОПРОС:
Каким должен быть способ, чтобы иметь дело с изменениями в глобальной переменной, которые сразу отражаются на других компонентах?
Можно ли вызвать метод компонента homePage из app.component?
Спасибо!