首页 > 解决方案 > Angular 环境循环依赖

问题描述

如文档所述,我使用多个environment文件来参数化应用程序启动。

environment.prod.ts

export const environment = {
    production: true,
    module: ProductionModule,
    baseUrl: ...
}

environment.ts

export const environment = {
    production: false,
    module: DevelopmentModule
}

在里面ProductionModule,我想从environment模块中“获取”一个远程 API URL。

@NgModule({
    declarations: [],
    imports: [
        LoggerModule.forRoot({ level: NgxLoggerLevel.ERROR })
    ],
    providers: [
        ...
        { provide: API_BASE_URL, useValue: environment.baseUrl }
    ]
})
export class ProductionModule {}

但是,这会产生Circular dependency错误。
解决这个问题的正确方法是什么?

标签: angular

解决方案


您不必使用providersnor 模块从environment.

只需environment.baseUrl在代码中真正需要它的地方导入即可。

import { environment } from '../../environments/environment';

在代码中

environment.baseUrl

这将使您免于循环依赖(我的意思是在您的情况下 - 不是一般情况),并且在环境文件中看到 ANY MODULE 对我来说是一种代码味道。


推荐阅读