Самый простой способ сделать это - воспользоваться услугой:
@Injectable({
providedIn: 'root',
})
export class AuthenticationService {
private currentUser: User; // Here, store the full user or the user id, depending your needs.
constructor() {
// [...]
}
public login(): void {
// [...] your call to the API and others...
this.currentUser = data.user; // Assuming your API returns the user after authentication.
}
public getCurrentUser(): User {
return this.user; // Here you get the current user.
}
// [...] other methods
}
Затем вы можете ссылаться на это в любом компоненте, используя внедрение зависимостей:
// [...]
export class YourComponent implements OnInit {
// [...]
constructor(private authService: AuthenticationService) {
}
ngOnInit() {
this.loggedUserID = this.authService.getCurrentUser().id; // set the loggedUserID.
}
}
Обратите внимание, что приведенный ниже код работает, потому что эта служба является одиночной:
Существует два способа сделать сервис одноязычным в Angular:
- Объявление корня для значения свойства @Injectable () предоставленного.
- Включить службу в модуль AppModule или в модуль, который импортируется только модулем AppModule