Javascript 如何订阅一个正常的函数作为一个可观察的角度
我有一个返回对象的函数Javascript 如何订阅一个正常的函数作为一个可观察的角度,javascript,angular,angular6,observable,mean-stack,Javascript,Angular,Angular6,Observable,Mean Stack,我有一个返回对象的函数 getUserState(): UserState { return this.userState; } 我将上述函数结果存储在一个可观察的文件中,如下所示: username$: Observable<UserState[]>; constructor(private userService:UserStateService) {} ngO
getUserState(): UserState {
return this.userState;
}
我将上述函数结果存储在一个可观察的文件中,如下所示:
username$: Observable<UserState[]>;
constructor(private userService:UserStateService) {}
ngOnInit(): void {
this.username$ = this.userService.getUserState().map(data =>
{
this.username$ = data;
})
}
我做错了什么?尝试导入“映射”操作符
导入'rxjs/add/operator/map'首先返回一个实际的可观测值:
getUserState(): Observable<UserState> {
return of(this.userState);
}
第三,我想您正在模板中的某个地方使用它
{{ username$ | async | json }}
如果不是像这样订阅的话
ngOnInit(): void {
this.subscription = this.userService.getUserState().subscribe((state: UserState) => ...);
}
ngOndestroy(): void {
this.subscription.unsubscribe(); // clean up after yourself
}
该函数返回一个UserState对象,该对象显然没有map属性。就这一点而言,RxJS 6中的可见光也不存在。您的ngOnInit没有任何意义,您是要将此.username$设置为外部值还是内部值?如果您只想创建单个值的可观察对象,那么它是of value.getUserState.pipemap…@Reactgular。同样,该方法不会返回observable@jonrsharpe如果你看函数的返回类型,你是对的,但老实说,在角度上不返回可观测值的服务是一种反模式,因此我假设OP在这里不仅仅犯了一个错误;
{{ username$ | async | json }}
ngOnInit(): void {
this.subscription = this.userService.getUserState().subscribe((state: UserState) => ...);
}
ngOndestroy(): void {
this.subscription.unsubscribe(); // clean up after yourself
}