在我的方法中,我需要返回“ this.profile”。但是我无法在profileObservable
之外使用this.profile profileObservable: Observable<ProfileModel>;
profile: ProfileModel;
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<ProfileModel> {
this.store$.dispatch(new ProfileFeatureStoreActions.GetProfile());
this.profileObservable = this.store$.pipe(
select(
ProfileFeatureStoreSelectors.selectProfile
),
filter(profile => !!profile)
);
this.profileObservable.subscribe(profile => {
this.profile = profile;
console.log(this.profile) // here is defined
});
return this.profile; //it's undefined
}
如果您有解决方案,那就非常感谢
答案 0 :(得分:0)
您无法返回订阅。您的决心返回Observable,因此您必须返回Observable值。
例如:
_log(someObject) //should log the object same as console.log does
_log('app running on port %d',3000) //should printf like console.log does
答案 1 :(得分:0)
您必须返回return this.profileObservable;
,然后才能订阅它。
另一件事是为什么您需要此return this.profile; //it's undefined
,因为它是全局变量,所以可以在组件中的任何位置访问this.profile。
答案 2 :(得分:0)
在类中创建一个像这样的方法:
get myProfile() {
return this.profile;
}
现在可以通过调用方法“ myProfile()”来访问您的个人资料值。
另一种选择是利用您可以订阅的角度行为主题,以获取最后发出的值,例如:
步骤1.在班级属性之后注册行为主题,如下所示:
profileSubject: BehaviorSubject<ProfileModel> = new BehaviorSubject();
profile$: Observable< ProfileModel > = this.profileSubject.asObservable();
步骤2。使用注册的主题发出您的个人资料值:
this.profileObservable.subscribe(profile => {
this.profileSubject.next(profile)
});
要在订阅之外访问您的个人资料值,请执行以下操作
this.profile$.subscribe(res => {
// the res contains your body;
});