user = this.user$.subscribe(
(value) => {//ici value est un User, pas un observable, de plus tu regarde quand user$ change pour le faire changer à nouveau avec sa nouvelle valeur oO
this.user$ = value;
},
(error) => {
console.log('Uh-oh, an error occurred! : ' + error);
},
() => {
console.log('Observable complete!');
}
);
Commençons par parler du AuthService. Ce service doit retourner un user ou / et un observable d'user. Comme user n'est pas sensé changer beaucoup, on peut faire comme ça :
@Injectable({
providedIn: 'root',
})
export class AuthService {
private _user: User | null = null;//privé parce que c'est au service de modificer cette variable
private async load() {//ici tu vas charger l'utilisateur, d'où le async
if (this._user) return;//si c'est déjà load, on a pas besoin de reload
[...]
}
async getUser(): User {//si on veut l'utilisateur en objet, on passe une copie pour que _user ne soit jamais modifié
await this.load();//pour que ce soit bien load
return {
...this._user
}
}
async getObsUser(): Observable<User> {//si on veut un observable d'user
await this.load();
return of(this._user)
}
}
Maintenant, dans ton composant, ce qui t'intéresse c'est d'avoir l'utilisateur. C'est lors de l'initialisation que l'on veut subscribe à un observable (ou attendre d'avoir l'utilisateur). On ne met jamais d'asynchrone avant.
On ne vas pas modifier user ou l'observable, on récupère juste une variable. Si tu veux modifier user, il faut que tu call une méthode du service AuthService pour modifier user.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça
Pas d'aide concernant le code par MP ni par mail, le forum est là pour ça