angular - 从对象创建 Observable
问题描述
我如何从这个对象创建一个 Observable?
this.localStorage.getItem('user').subscribe((user) => {
if (user != null) {
console.log(user);
console.log('User existiert!');
// Create Observable
this.data = new Observable((observer: any) => {
observer.next(user);
observer.complete();
});
return this.data;
}
});
用户对象如下所示:
我将其写入服务,但从组件订阅不起作用。什么问题?
解决方案
您需要在服务方法中返回一个 observable,并让组件调用该方法来获取 observable。
同样正如 jonrsharpe 已经提到的,您不需要创建另一个 observable。如果您想对数据进行转换或使用console.log
.
import { map } from 'rxjs/operators';
import { LocalStorage } from '@ngx-pwa/local-storage@6';
class Service {
constructor(private localStorage: LocalStorage) {}
// this is the naive approach
getUser() {
return new Observable((observer) => {
this.localStorage.getItem('user').subscribe((user) => {
if (user != null) {
console.log(user);
console.log('User existiert!');
}
observer.next(user);
observer.complete();
});
});
}
// this is a better approach
getUser() {
return this.localStorage.getItem('user').pipe(
map((user) => {
if (user != null) {
console.log(user);
console.log('User existiert!');
}
return user
}),
);
}
}
推荐阅读
- python - 如何在 VSC 1.49.2 中禁用波浪线下划线?
- python - Keras 中嵌入层的详细信息
- swift - GMSMapView:带收音机的中心地图
- vpn - 连接到 vpn windvoss 时无法连接到某些站点
- angular - Angular Cloudinary 未设置 alt 标签
- python - 我如何使用 Django-mptt?
- javascript - AWS Lambda Node.js 对象绑定
- r - R Studio中重估的管道问题
- javascript - 如何在屏幕上列出所有 Firebase 存储文件
- php - PHP模数函数没有给我预期的结果