首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Injectable({providedIn:模块}) =>循环依赖项(路由)

@Injectable({providedIn:模块}) =>循环依赖项(路由)
EN

Stack Overflow用户
提问于 2019-05-30 12:22:19
回答 1查看 234关注 0票数 1
  1. VendasModule导入路由器
  2. 导入父组件的
  3. 导入子组件的
  4. 它导入服务(我希望成为@injectable providedIn: VendasModule)
  5. 导入VendasModule (将用于@injectable装饰器)。
  6. 检测到循环依赖!

对如何解决这个问题有什么想法吗?我需要所有这些进口品,不是吗?

代码语言:javascript
复制
VendasModule:
@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(VendasRoutes),
    FlexLayoutModule,
    ReactiveFormsModule,
    MatCardModule,
    MatInputModule,
    MatButtonModule,
    MatProgressBarModule,
    MatRadioModule,
    MatSelectModule,
    MatTabsModule,
    MatDatepickerModule,
    MatTableModule,
    MatCheckboxModule,
    MatDialogModule,
    MatIconModule,
    MatStepperModule,
    MatListModule,
    MatAutocompleteModule,
    SharedModule,
    FormsModule,
    NgxCurrencyModule.forRoot(customCurrencyMaskConfig),
    CustomFormsModule,
    MatExpansionModule,
    MatChipsModule,
    MatTooltipModule,
    MatProgressSpinnerModule,
      ], (...)
代码语言:javascript
复制
VendasRouting:
export const VendasRoutes: Routes = [
    {
        path: '',
        canActivateChild: [Menu],
        children: [
            {
                path: 'cadastro-contrato',
                component: CadastroContratoComponent
            },
            {
                path: 'plano-comercial',
                component: PlanoComercialComponent
            },
            {
                path: 'check-list',
                component: CheckListComponent
            },
            {
                path: 'plano-emissoras',
                component: PlanoEmissorasComponent((FATHER COMPONENT))
            }

        ]
    }
]
代码语言:javascript
复制
Father Component:
export class PlanoEmissorasComponent implements OnInit, OnDestroy { 
  @ViewChild(ProspectEmissorasComponent) prospectEmissoras: ProspectEmissorasComponent; ((Child Component))
  @ViewChild(NegociacaoEmissorasComponent) negociacaoEmissoras: NegociacaoEmissorasComponent;
  @ViewChild(FinancEmissorasComponent) financEmissoras: FinancEmissorasComponent;
  @ViewChild(ContratoEmissorasComponent) contratoEmissoras: ContratoEmissorasComponent;
代码语言:javascript
复制
Service:
import { VendasModule } from "../../../vendas.module";

@Injectable({
    providedIn: VendasModule
})
export class PlanoEmissorasService { ... }

我得到了这个错误:

代码语言:javascript
复制
WARNING in Circular dependency detected:
src/app/vendas/vendas.routing.ts -> src/app/vendas/cadastro-contrato/plano-emissoras/plano-emissoras.component.ts -> src/app/vendas/cadastro-contrato/plano-emissoras/prospect-emissoras/prospect-emissoras.component.ts -> src/app/vendas/cadastro-contrato/plano-emissoras/services/plano-emissoras.service.ts -> src/app/vendas/vendas.module.ts -> src/app/vendas/vendas.routing.ts
EN

回答 1

Stack Overflow用户

发布于 2019-05-30 13:03:19

循环引用在TypeScript编译器试图解析循环导入时生成的代码中。您可以遵循以下任何一种解决方案:

  1. 使用providers数组的VendasModule提供您的服务。
  2. 将服务injectable设为根级:@Injectable({ providedIn: 'root' }),这将有助于树的抖动.
  3. 在另一个模块中使用providedIn并在VendasModule中导入它 @Injectable({ providedIn: SomeModule})导出类PlanoEmissorasService {} 在VendasModule中使用此模块 @NgModule({ imports: SomeModule})导出类VendasModule

查看这个关于角回购的评论。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56378252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档