Angular 特定服务中的头出现问题
在我的Angular 特定服务中的头出现问题,angular,Angular,在我的onInit()函数中的组件中,我有一个用于列出一些数据的调用。使用以下代码调用名为“Permission.service”的服务 ngOnInit() { this.listPermissions(); } listPermissions(): void { this.permissionService.getPermissions().subscribe( res=>{ this.permissionList=res;
onInit()
函数中的组件中,我有一个用于列出一些数据的调用。使用以下代码调用名为“Permission.service”的服务
ngOnInit() {
this.listPermissions();
}
listPermissions(): void {
this.permissionService.getPermissions().subscribe(
res=>{
this.permissionList=res;
}
)
}
但是,它给了我以下错误日志:
core.js:1673错误类型错误:无法读取的属性“length”
未定义
http.js:108
在Array.forEach()处
在HttpHeaders.lazyInit(http.js:102)
在HttpHeaders.push../node_modules/@angular/common/fesm5/http.js.HttpHeaders.init
(http.js:166)
在HttpHeaders.push../node_modules/@angular/common/fesm5/http.js.HttpHeaders.forEach
(http.js:235)
在可观察时订阅(http.js:1445)
在Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.\u尝试订阅
(见js:43)
在Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe
(见js:29)
在subscribeTo.js:21
在subscribeToResult(subscribeToResult.js:11)
使用chrome调试器,“x-access-token”头会带来一个未定义的值。但是,除了服务名之外,使用完全相同的代码调用不同的服务,效果很好
export class PermissionsService {
constructor(private http: HttpClient, private loginService: LoginService, private globalService: GlobalsService) {}
httpOptions = {
headers: new HttpHeaders({
"Content-Type": "application/json",
"x-access-token": this.loginService.userInfo
})
};
getPermissions(): Observable<any[]> {
return this.http.get<any[]>(
this.globalService.API_PATH + "readAllPermissions",
this.httpOptions
);
}
...
导出类权限服务{
构造函数(私有http:HttpClient,私有loginService:loginService,私有globalService:globalService){}
httpOptions={
标题:新的HttpHeaders({
“内容类型”:“应用程序/json”,
“x-access-token”:this.loginService.userInfo
})
};
getPermissions():可观察{
返回this.http.get(
this.globalService.API_PATH+“readAllPermissions”,
这个是.httpOptions
);
}
...
下面是不起作用的服务:
export class RolePermissionService {
constructor(private http: HttpClient, private loginService: LoginService, private globalService: GlobalsService) { }
httpOptions = {
headers: new HttpHeaders({
"Content-Type": "application/json",
"x-access-token": this.loginService.userInfo
})
};
getPermissions(): Observable<any[]> {
return this.http.get<any[]>(
this.globalService.API_PATH + "readAllPermissions",
this.httpOptions
);
}
导出类角色许可服务{
构造函数(私有http:HttpClient,私有loginService:loginService,私有globalService:globalService){}
httpOptions={
标题:新的HttpHeaders({
“内容类型”:“应用程序/json”,
“x-access-token”:this.loginService.userInfo
})
};
getPermissions():可观察{
返回this.http.get(
this.globalService.API_PATH+“readAllPermissions”,
这个是.httpOptions
);
}
在尝试访问组件之前,已在登录功能中设置userInfo变量。问题已得到解决。我正在使用Navbar发送的httpOptions。但在登录之前,Navbar已初始化,并且未定义标题。在此服务中,我创建了一个函数来初始化httpOptions,每次我使用此方法,我将获得auth令牌。您是否从这两个服务中的
@Angular/common/Http
导入Http内容?@JacopoSciampi是的,我是这样导入的:从“@Angular/common/Http”导入{HttpClient,HttpParams,HttpHeaders}”;