对我有用的解决方案
在 libs 下创建一个名为的文件夹app-config
,并在 app-config 文件夹中添加一个“index.ts”文件。此库可以在您的所有应用程序中共享。在 index.ts 文件中添加以下内容
import { InjectionToken } from '@angular/core';
export const APP_CONFIG = new InjectionToken('Application config');
打开基本tsconfig.json
文件并添加 app-config 的路径,以便将其导入到您的应用程序中@app-workspace/app-config
"paths": {
"@app-workspace/ui": ["libs/ui/src/index.ts"],
"@app-workspace/auth": ["libs/auth/src/index.ts"],
"@app-workspace/utils": ["libs/utils/src/index.ts"],
"@app-workspace/app-config": ["libs/app-config/index.ts"]
}
现在在您的应用程序中打开下面的文件apps/app1/src/app/app.module.ts
并对提供程序数组进行以下更改
import { APP_CONFIG } from '@app-workspace/app-config';
import { environment } from '../environments/environment';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
AppRoutingModule,
],
providers: [
{ provide: APP_CONFIG, useValue: environment}
],
bootstrap: [AppComponent]
})
export class AppModule {}
这是驻留在下面的示例environment.ts
文件app1
export const environment = {
production: false,
apiUrl: 'http://localhost:3000/api',
};
您也可以在共享库中使用 app-config,例如,假设您正在从共享库中进行 api 调用libs/auth/src/lib/services/auth.service.ts
import { APP_CONFIG } from '@app-workspace/app-config';
import { Inject, Injectable } from '@angular/core';
@Injectable()
export class AuthService {
constructor(
@Inject(APP_CONFIG) private appConfig: any
) {
console.log(this.appConfig.apiUrl); // This will print `http://localhost:3000/api`
}
}
希望这会有所帮助 :) 另外,如果您在使用导入时遇到任何错误,您可能必须重新启动您的应用程序。