Angular 为什么在http拦截器内ActivateRoute参数为空?
我正试图在我的请求头中将一个路由参数发送到带有和拦截器的api。为此,我将activatedRoute服务注入到一个自定义拦截器中,不确定为什么参数为nullAngular 为什么在http拦截器内ActivateRoute参数为空?,angular,angular8,Angular,Angular8,我正试图在我的请求头中将一个路由参数发送到带有和拦截器的api。为此,我将activatedRoute服务注入到一个自定义拦截器中,不确定为什么参数为null @Injectable() export class TokenInterceptor implements HttpInterceptor { constructor(private activeRoute: ActivatedRoute) { console.log(this.activeRoute.snapshot.pa
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
constructor(private activeRoute: ActivatedRoute) {
console.log(this.activeRoute.snapshot.params.itemGuid); //Undefined
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = sessionStorage.getItem('sessionToken');
let newHeaders = req.headers;
if (token) {
newHeaders = newHeaders.append('sessionToken', token);
}
const authReq = req.clone({ headers: newHeaders });
return next.handle(authReq);
}
}
如果我试试这个,它会起作用
知道为什么会这样吗?我可以直接找到params
我使用的是angular 8它取决于注入
ActivatedRoute
服务的位置
ActivatedRoute是一种服务,提供给每个路由组件,其中包含路由特定信息,如路由参数、静态数据、解析数据、全局查询参数和全局片段
我们可以获取queryParams或fragment,但
ActivatedRoute
仅向相应的路由组件提供路径参数信息。您是否也在拦截中获取snapshot.params null?是的,我在拦截类中获取了param null。抱歉,我问了一个令人困惑的问题。在该拦截器类中的intercept方法中是否得到null?在本例中,您已经在构造函数中记录了值。是的,在构造函数中,我得到了空值,即使在intercept方法中也是如此。二者都
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: TokenInterceptor,
multi: true,
}
],