это проблема, с которой я столкнулся в Angular.Приведенный ниже метод выполняет два http-вызова.
submit(username: string, pword: string) {
this.loginService.signIn(username, pword);
this.loginService.currentloginAttemp.subscribe(data => {
if (data == true) {
this.profileService.getProfile();
}
});
this.profileService.newProfileObj.subscribe(dataProfile =>{
console.log(dataProfile);
});
}
submit(username: string, pword: string) {
this.loginService.signIn(username, pword);
signIn выполняет http-вызов и присваивает наблюдаемому объекту currentloginAttemp
this.loginService.currentloginAttemp.subscribe(data => {
if (data == true) {
this.profileService.getProfile();
}
});
Приведенный выше код работает без проблем.this.profileService.getProfile () выполняет http-вызов для получения нового профиля.Приведенный ниже код подписывается на полученный профиль.
this.profileService.newProfileObj.subscribe(dataProfile =>{
console.log(dataProfile);
});
}
Когда я делаю console.log (dataProfile);Я получаю неопределенное предупреждение.
Когда я запускаю эту функцию:
logout() {
this.profileService.newProfileObj.subscribe(dataProfile =>{
console.log(dataProfile);
});
}
console.log (dataProfile) возвращает профиль.
Как отложить после строкикода this.profileService.getProfile () , чтобы, когда я подпишусь на профиль, мой компонент его увидел?
РЕДАКТИРОВАТЬ:
Просто чтобы было ясно.currentloginAttemp назначается, когда this.loginService.signIn выполняет HTTP-вызов.Вот почему я не уверен, почему newProfileObj имеет значение null, когда он назначен в методе this.profileService.getProfile ().
EDIT 2:
getProfile() {
let tempURL = this.getProfileUrl + this.currProfileId.value;
this.http.get<Profile>(tempURL).subscribe((data) => {
this.currProfileObj.next(data);
});
}