gpt4 book ai didi

angular - 使用 forRoot 传递配置数据

转载 作者:太空狗 更新时间:2023-10-29 16:47:53 24 4
gpt4 key购买 nike

我正在尝试将配置数据传递到 Angular 中的自定义库中。

在用户应用程序中,他们将使用forRoot

将一些配置数据传递到我的库
// Import custom library
import { SampleModule, SampleService } from 'custom-library';
...

// User provides their config
const CustomConfig = {
url: 'some_value',
key: 'some_value',
secret: 'some_value',
API: 'some_value'
version: 'some_value'
};

@NgModule({
declarations: [...],
imports: [
// User config passed in here
SampleModule.forRoot(CustomConfig),
...
],
providers: [
SampleService
]
})
export class AppModule {}

在我的自定义库中,特别是 index.ts,我可以访问配置数据:

import { NgModule, ModuleWithProviders } from '@angular/core';
import { SampleService } from './src/sample.service';
...

@NgModule({
imports: [
CommonModule
],
declarations: [...],
exports: [...]
})
export class SampleModule {
static forRoot(config: CustomConfig): ModuleWithProviders {
// User config get logged here
console.log(config);
return {
ngModule: SampleModule,
providers: [SampleService]
};
}
}

我的问题是如何在自定义库的 SampleService

中提供配置数据

当前 SampleService 包含以下内容:

@Injectable()
export class SampleService {

foo: any;

constructor() {
this.foo = ThirdParyAPI(/* I need the config object here */);
}

Fetch(itemType:string): Promise<any> {
return this.foo.get(itemType);
}
}

我已经阅读了 Providers 上的文档,但是 forRoot 示例非常简单,似乎没有涵盖我的用例。

最佳答案

你就快完成了,只需同时提供 SampleServiceconfig在您的模块中,如下所示:

export class SampleModule {
static forRoot(config: CustomConfig): ModuleWithProviders<SampleModule> {
// User config get logged here
console.log(config);
return {
ngModule: SampleModule,
providers: [SampleService, {provide: 'config', useValue: config}]
};
}
}
@Injectable()
export class SampleService {

foo: string;

constructor(@Inject('config') private config:CustomConfig) {
this.foo = ThirdParyAPI( config );
}
}

更新:

自 Angular 7 ModuleWithProviders是通用的,所以它需要 ModuleWithProviders<SampleService>

关于angular - 使用 forRoot 传递配置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43292628/

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