【发布时间】:2019-03-13 10:57:54
【问题描述】:
在我的UserService 中,我有一个用户Observable 对象,其中包含登录用户的UserModel。为了测试,我在ngOnInit() 中实现了登录过程:
this.userService.authenticate('###', '###')
.subscribe(res => console.log('authenticated'));
private userSource = new BehaviorSubject<UserModel>(null);
public user = this.userSource.asObservable();
My UserModel 提供了一个名为 authKey 的属性,用于 API 身份验证。
在我的ProjectService 我想做一个 api 请求;为此,UserModel 中存储的 api 密钥是必需的。可以只订阅用户属性,但我读到了避免在服务内部进行订阅。
问题
如何将此订阅与管道/映射连接?我的方法是以下代码;但这感觉像是糟糕的代码。
suggest(term: string): Observable<ProjectModel[]> {
return this.userSrv.user.pipe(
mergeMap((user: UserModel) => {
const options = {params: {'access-token': user.accessToken}};
return this.http.get<ProjectModel[]>(this.conf.url, options).pipe(
map(response => {
// mapping the projects ...
return projects;
})
);
})
);
}
【问题讨论】:
-
您是否将此访问令牌添加到客户端应用程序的每个传出请求中?
-
可以,登录过程除外。
标签: angular ionic-framework rxjs angular-httpclient