如何从该对象创建一个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;
}
});
用户对象如下:
我将此内容写入了服务,但是从组件进行订阅无法正常工作。有什么问题?
答案 0 :(得分:1)
您需要在服务方法中返回一个可观察的对象,并使组件调用该方法以获取可观察的对象。
正如jonrsharpe已经提到的那样,您不需要创建另一个可观察的对象。如果要对数据进行转换或使用console.log
,只需使用map / tap运算符。
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
}),
);
}
}