Итак, у меня есть базовый компонент, и в нем у меня есть наблюдаемый внутри его конструктора, чтобы получить значение, как только оно будет получено внутри другого компонента, который будет проверять данные пользователя. Однако при попытке получить это значение в дочернем классе данные поступают как неопределенные. Ниже кода у меня проблемы:
Моя наблюдаемая:
@Injectable()
export class ObservableUsuario implements ObservableUtil {
subject = new Subject<any>();
setUsuario(variable: any) {
this.subject.next({ text: variable });
}
clearUsuario() {
this.subject.next();
}
getUsuario(): Observable<any> {
return this.subject.asObservable();
}
Здесь наблюдаемый установил:
getValue = (refresh: boolean = true) => cacheable(
() => this.http.get(`${environment.apiEndpoint}/api/Get/Value`, headers()).map(res => {
this.observableUser.setUsuario(res.json());
return res.json();
}),
);
Базовый компонент:
//more code
perfilLotado: any;
constructor(
public observableUser: ObservableUsuario
) {
this.observableUser.getUsuario().subscribe(
perfil => this.perfilLotado = perfil.text.lotacaoDTO[0].perfilDTO[0].nome);
}
//more code
Дочерний компонент:
export class BaseListComponent extends BaseComponent {
NgOnInit(){}
validAction(situacao: number): any {
//Here appearer like undefined...
console.log(this.perfilLotado);
if (this.sistema.situacaoRestric[situacao] != undefined) {
this.showMsg('warn', 'Mensagem de Alerta', this.sistema.situacaoRestric[situacao]);
return false;
} else if (this.sistema.situacaoRestric[situacao] == undefined && this.sistema.perfilRestrict[this.perfilLotado] != undefined) {
this.showMsg('warn', 'Mensagem de Alerta', this.sistema.perfilRestrict[this.perfilLotado]);
return false;
} else if (this.sistema.situacaoRestric[situacao] == undefined && this.sistema.perfilRestrict[situacao] == undefined) {
return true;
}
}
Другими словами, моя проблема заключается в загрузке значения, переданного моим наблюдаемым объектом, в класс дочернего компонента. ПРИМЕЧАНИЕ. Насколько я понимаю, это последний загружаемый компонент, как я могу заставить его загружаться раньше других компонентов экрана?