상황 : 내 app.component에서이온이 2 - 전역 변수를 저장하는 방법?
로그인 기능이 있습니다. 그것은 제대로 작동하고 API에서 사용자 데이터를 얻을.
이 데이터를 앱 전체에 액세스하려면 전역 변수로 저장해야합니다.
나는 서비스를 공유하는 것이 그 일을하는 방법이라고 생각했지만, 불행히도 내가 생각한 것처럼 작동하지는 않는다.
강령 :
서비스 :
import { Injectable } from '@angular/core';
@Injectable()
export class LoginService {
public accountInfo;
setUserData(value)
{
this.accountInfo = value;
}
getUserData() {
return this.accountInfo;
}
}
app.component :
loginSubmit()
{
// Function reduced to what is essential to the question
this.userService.submitLogin(email, password)
.subscribe((response) => {
if(response.result == 1)
{
this.loginService.setUserData(response.account_info);
var justTesting = this.loginService.getUserData();
// Getting the proper result back
console.log(justTesting);
}
}, (error) => {
console.log(error);
});
}
다른 구성 요소로부터 사용자 데이터에 액세스를 시도 :
을this.accountInfo = this.loginService.getUserData();
console.log(this.accountInfo);
결과는 undefined
입니다. 아마 ... this.accountInfo합니다 (서비스)를 다시 인스턴스화하는 서비스가 다른 구성 요소에서 호출 될 때 때문에
질문 :
가 어떻게 전역 변수로 일부 데이터를 저장할 수 있습니까? 서비스를 공유하여 완료 할 수 있습니까?
감사합니다.
당신이)'this.accountInfo = this.loginService.getUserData (얻기 위해 노력하고있다, 그것은 비어있는 경우 만 그것은이다''은'setUserData (값) 안에 무엇인지 확인 undefined를 반환하면 설정된 사용자 데이터를 확인해야합니다 –
하지만 setUserData는 전역 변수를 설정하기 위해 호출 한 함수입니다. – johnnyfittizio
예, 이해했습니다!. 당신의 페이지 중 하나에서'this.loginService.setUserData ('wellcome');'을 시도한 다음'this.loginService.getUserData();와 같은 다른 페이지에서 값을 얻으려고 시도한다. . –