Каждый раз, когда я вызываю свой геттер, мне возвращают неопределенное значение. У меня есть установщик в одном из моих сервисов, и я хочу установить переменную, тогда, когда я использую функцию получения, я хочу вернуть эту переменную. Я считаю, что проблема заключается в том, что мой установщик работает асинхронно, поэтому он не устанавливает мою переменную до того, как мне нужно будет использовать получатель. Я запутался в том, как убедиться, что мой установщик готов, прежде чем я сделаю что-нибудь еще. Я чувствую, что должен использовать обещание, но не понимаю, как это сделать. Может быть, я просто делаю это неправильно все вместе.
// team-member.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
const TEAM_API_URL = 'http://127.0.0.1:8080/api/team';
@Injectable({
providedIn: 'root'
})
export class TeamMemberService {
memberPermissions: any; // Variable that is returned as undefined.
constructor(private http: HttpClient) {
this.setTeamMemberPermissions = JSON.parse(localStorage.getItem('jwt')).user['username'];
console.log(this.getTeamMemberPermissions); // Only logging for testing purposes. Getter will be used in my components
}
public singleTeamMemberInfo(username: string): Observable<any> {
return this.http.get<any>(TEAM_API_URL + '/user/list/' + username);
}
set setTeamMemberPermissions(username: string) {
this.singleTeamMemberInfo(username).pipe(map((r => {
this.memberPermissions = r['results'][0].permission;
}))));
}
get getTeamMemberPermissions() {
return this.memberPermissions;
}
}