Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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 角度9-无法实例化循环依赖项_Angular_Circular Dependency - Fatal编程技术网

Angular 角度9-无法实例化循环依赖项

Angular 角度9-无法实例化循环依赖项,angular,circular-dependency,Angular,Circular Dependency,我有两个服务(除其他外)的角度应用程序。ApiService和AuthServiceService @Injectable({ providedIn: 'root' }) export class APIService { constructor(private http: HttpClient) { } 及 当我打开网页时,出现错误无法实例化循环依赖项!AuthServiceService我找不到我在哪里建立了循环依赖关系 我已将问题隔离到AuthServiceService构造函数

我有两个服务(除其他外)的角度应用程序。ApiService和AuthServiceService

@Injectable({
  providedIn: 'root'
})
export class APIService {
  constructor(private http: HttpClient) { }

当我打开网页时,出现错误无法实例化循环依赖项!AuthServiceService我找不到我在哪里建立了循环依赖关系

我已将问题隔离到AuthServiceService构造函数中的私有api:APIService。如果我删除那个参数,错误就消失了

我安装了madge,但它也没有发现循环依赖的任何问题

PS D:\Web\ClientApp>npx madge--循环--扩展ts/

已处理127个文件(20.1s)(45个警告)

√ 没有找到循环依赖项

下一步怎么办?如何找出问题所在


谢谢。

此错误基本上意味着您的应用程序正在运行。由于删除auth组件中的API服务修复了一些问题,您能告诉我API服务是否指向AuthService吗?我的猜测是这样的,因此应用程序一直在循环中运行(循环一词出现在这里),因为它看起来不应该创建循环依赖,我想我应该尝试以旧的模块样式“提供”这些,而不是使用
providedIn:'root'
,只是看看它是否有任何不同。它可能会修复它,或者至少会给你一个更好的错误消息……仍然没有解决方案。我已经从AuthService中删除了ApiService引用,并直接在AuthService中实现了所需的单个调用,但在调用this.http.get(apiAddress,{responseType:'text'as any})时仍然存在相同的错误(……明白了!!!我在构造函数中注入了带有AuthService的HttpInterceptor。由于我在AuthService的构造函数中调用了http.get,所以interceptor尝试创建新的AuthService,并且存在循环依赖关系。我在AuthService的构造函数中添加了setTimeout,它在20ms后触发http.get,并且可以工作。这个错误基本上意味着您的app在循环中。由于删除auth组件中的API服务修复了一些问题,您能告诉我APIService是否指向AuthService吗?我猜是的,因此应用程序一直在循环(循环一词出现的地方),因为它看起来不应该创建循环依赖,我想我应该尝试“提供”这些都是旧式的模块,而不是使用“root”中提供的
,只是为了看看它是否有任何不同。它可能会修复它,或者至少会给您一个更好的错误消息……仍然没有解决方案。我已经从AuthService中删除了ApiService引用,并直接在AuthService中实现了我需要的单个调用,但当我所有这些.http.get(apiAddress,{responseType:'text'如有})(……明白了!!!我在构造函数中注入了带有AuthService的HttpInterceptor。由于我在AuthService的构造函数中调用了http.get,所以interceptor尝试创建新的AuthService,并且存在循环依赖关系。我在AuthService的构造函数中添加了setTimeout,在20ms后触发http.get,它可以工作。
 @Injectable({
  providedIn: 'root'
})
export class AuthServiceService {
  currentUser: User;

  token: string;

  constructor(private http: HttpClient, private jwt: JwtHelperService, private api: APIService ) {
    this.token = localStorage.getItem('authToken');

    this.setCurrentUser(this.token);


    this.api.getMyProfile().subscribe(u => {
// some code    

    });

   }