gpt4 book ai didi

angular - 如何在 nrwl/nx 工作区的库中使用 appenvironment.ts?

转载 作者:行者123 更新时间:2023-12-02 16:27:09 26 4
gpt4 key购买 nike

如果我有一个身份验证库,其中包含组件、服务、ngrx 等...我如何访问实现身份验证库的应用程序的环境?因此,Auth 服务应该知道后端 url 来进行登录。所以:

import { environment as env } from "@env";
@Injectable()
class AuthService {
private endpoint = '/v1/auth';
private backendHost = env.backendHost;

authenticateUser(credentials) {
return makeHttpRequestHereToBackend(this.backendHost.this.endpoint, credentials);
}
}

无论身份验证库在何处实现,库服务都知道从实现所述库的应用程序环境中访问哪个服务器。

谢谢!!

最佳答案

对我有用的解决方案

在 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 {}

这是位于 app1 下的示例 environment.ts 文件

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`
}
}

希望这对您有所帮助:)另外,如果您在使用导入时遇到任何错误,您可能必须重新启动应用程序。

关于angular - 如何在 nrwl/nx 工作区的库中使用 appenvironment.ts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com