我试图通过新的providedIn属性提供解析服务.

这是我在受保护模块中使用的翻译解析器:

import { Injectable } from '@angular/core';

import { Observable , pipe } from 'rxjs';
import {map} from "rxjs/operators";

//This is causing: "WARNING in Circular dependency detected:"
import {ProtectedModule} from "../../../protected/protected.module";

import { HttpHandlerService } from '../../http/http-handler.service';

@Injectable({
  providedIn: ProtectedModule //Over here (I need the import for this line)
})
export class TranslationsResolverService {
  constructor(private _httpHandlerService : HttpHandlerService) { }
    resolve(): any {
      //Do Something...
    }
}

我在受保护的路由模块中声明了翻译解析程序服务:

import { NgModule }           from '@angular/core';
import {RouterModule, Routes} from '@angular/router';

import {AuthGuard} from "../core/resolvers/auth/auth.guard";
import {TranslationsResolverService} from "./../core/resolvers/translations/translations-resolver.service";

const routes: Routes = [
  {
    path : 'app' ,
    component: ProtectedComponent,
    resolve : {
      translations : TranslationsResolverService // <---- Over here - i can't remove that of course
    },
    canActivate: [AuthGuard],
    ]
  }
];


@NgModule({
  imports : [RouterModule.forChild(routes)],
  exports : [RouterModule]
})
export class ProtectedRoutingModule { }

由于我导入(typescript导入)translations-resolver.service.ts in order to use it in the 102 attribute中的protected.module,我在检测到循环依赖关系时收到一条警告:

path/to/translations-resolver.service.ts -> 

protected/protected.module.ts ->

protected/protected-routing.module.ts -> 

path to translations-resolver.service.ts

第二个路径(protected/protected.module.ts)是由于providedIn属性而添加的.

我可以通过将translationsResolver作为NgModule provider(在提供者数组中)提供来解决这个问题,但我更喜欢它是injectable提供者.

有解决这个问题的建议吗?

推荐答案

这不是Angular 依赖性问题.

循环引用是由TypeScript编译器在try 解析循环imports时生成的.

第一个解决方案

创建一个名为ProtectedResolversModule的新模块,使用providedIn: ProtectedResolversModule并将解析器移到那里.

现在,您可以将该模块导入到ProtectedModule中,并且在加载ProtectedRoutingModule时不会出现循环依赖项错误.

第二种解决方案

使用ProtectedModuleprovidersarray.

Typescript相关问答推荐

自定义挂钩上的React useState正在忽略提供的初始状态

如何在另一个if条件中添加if条件

React Hook中基于动态收件箱定义和断言回报类型

如何从TypScript中的接口中正确获取特定键类型的所有属性?

为什么tsx不判断名称中有"—"的属性?'

如何在Typescript 中输入两个相互关联的变量?

Angular 错误NG0303在Angular 项目中使用app.Component.html中的NGFor

分解对象时出现打字错误

是否可以针对联合类型验证类型属性名称?

为什么Typescript不能推断类型?

下载量怎么会超过下载量?

如何从输入中删除值0

TypeScrip-根据一个参数值验证另一个参数值

在Reaction中折叠手风琴

如何使用angular15取消选中位于其他组件中的复选框

TS不能自己推断函数返回类型

如何实现允许扩展泛型函数参数的类型

定义一个只允许来自另一个类型的特定字符串文字的类型的最佳方式

Typescript 从泛型推断类型

在Typescript 无法正常工作的 Three.js 中更新动画中的 GLSL 统一变量