我对 Angular 很陌生。我正在使用带有 NGXS 的 Angular 6 进行状态管理。
我的 NGXS 商店有一个user
减速器,其接口是
/* src/app/store/models/user.model.ts */
export interface User {
serverToken? : string;
// and other unrelated stuff
}
我想serverToken
在.Authorization
HttpInterceptor
这是我当前的HttpInterceptor
代码
import {Store, Select} from '@ngxs/store';
import {Injectable} from '@angular/core';
import {HttpInterceptor, HttpHandler, HttpRequest, HttpEvent} from '@angular/common/http';
import {Observable} from 'rxjs';
import {User} from '../store/models/user.model';
@Injectable()
export class ApiInterceptor implements HttpInterceptor {
constructor(private store : Store) {}
@Select()user$ : Observable < User >;
intercept(req : HttpRequest < any >, next : HttpHandler) : Observable < HttpEvent < any >> {
let options = {
url: `https://base-url.com/api/${req.url}`
};
const serverToken = '???';
if (serverToken) // if not empty
options = {
...options,
headers: req
.headers
.set('Authorization', `JWT ${serverToken}`)
}
const duplicate = req.clone(options);
return next.handle(duplicate);
}
}
所以我的问题是:如果不为空,如何正确优雅地使用user$
observable 来获取serverToken
并使用它?HttpInterceptor
serverToken