Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 为什么在http拦截器内ActivateRoute参数为空?_Angular_Angular8 - Fatal编程技术网

Angular 为什么在http拦截器内ActivateRoute参数为空?

Angular 为什么在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

我正试图在我的请求头中将一个路由参数发送到带有和拦截器的api。为此,我将activatedRoute服务注入到一个自定义拦截器中,不确定为什么参数为null

@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,
    }
  ],