- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将配置数据传递到 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
示例非常简单,似乎没有涵盖我的用例。
最佳答案
你就快完成了,只需同时提供 SampleService
和 config
在您的模块中,如下所示:
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/
任何人都可以向我说明我应该如何使用 .forRoot() 调用构建多个嵌套的功能模块层次结构? 例如,如果我有这样的模块会怎样: - MainModule - SharedModule - Featu
我想知道如何返回与 reducer 函数相同类型的对象: function storeReducer( state = INITIAL_APPLICATION_STATE, action: A
我正在尝试在我的 Angular 5 应用程序中实现延迟加载,但出现错误: 未捕获( promise ):错误:RouterModule.forRoot() 调用了两次。延迟加载的模块应该改用 Rou
考虑到有一个模块 @NgModule({ imports: [ Ng2Webstorage.forRoot({ prefix: 'SOME_PREFIX' }),
我在 Angular 中开发了一个包含共享组件的库,我想在那里传递配置。 一切都与以下内容基本相同: Pass config data using forRoot 问题是,我需要将用户传递给这个模块,
我很惊讶没有问题的确切答案: forRoot/forChild 方法是用来做什么的? 例如在 RouterModule 中: Router.forRoot(routes) 最佳答案 RouterMod
我正在尝试在我的应用程序中实现延迟加载,但似乎遇到了一个问题,我收到了错误消息: Error: RouterModule.forRoot() called twice. Lazy loaded mod
问题是我在 forRoot 方法中调用一个函数,如下所示: app.module.ts import {environment} from '../environments/environment';
我正在浏览 example of Angular2 Material我看到所有 Material 模块都使用 forRoot() 方法导入到根模块中。所以在我的应用程序中我也这样做。 现在我需要在其他
我正在尝试将配置数据传递到 Angular 中的自定义库中。 在用户应用程序中,他们将使用forRoot 将一些配置数据传递到我的库 // Import custom library import {
我正在编写一个使用@ngx-translate 的 Angular 应用程序。使用 TranslateModule.forRoot(...) 我提供了一个 TranslateLoader: @NgMo
我正在使用包 ngx-cookieconsent将模块导入为: const cookieConfig: NgcCookieConsentConfig = { "cookie": { "domain":
我有一个组件 ListComponent 需要在 2 个模块中使用,其中一个是延迟加载的。所以我创建了声明 ListComponent 的 SharedModule。 ListComponent 使用
我有一个组件 ListComponent 需要在 2 个模块中使用,其中一个是延迟加载的。所以我创建了声明 ListComponent 的 SharedModule。 ListComponent 使用
我正在学习 Angular2 教程:Tour of Heroes 我所有的教程旅程都如预期的那样,但是到了以下几点: https://angular.io/docs/ts/latest/tutoria
在我的 Angular 应用程序中有一个名为 Ngx-Stripe 的模块 我将其定义为如下文档: NgxStripeModule.forRoot('***your-stripe-publishabl
我有一个工作 Angular 2 项目。我需要制作一个弹出式表格来填写表格中的详细信息。单击一个按钮后,我想要一个弹出表单,用户可以在其中输入详细信息并提交。为此,我一直在尝试使用 Angular 2
angular2 rc.5 我收到 TypeError: Cannot read property 'forRoot' of undefined(...)当我调查时,我发现 RouterModule
我在嵌套组件中使用工具提示和模式,在我的规范文件中,我在测试模块中导入了 NgbModule.forRoot()。 除了这个组件外,这似乎在任何地方都有效,如果我添加这个导入,我的许多单元测试突然开始
我想知道这两段代码是否等价。 我可以使用 providedIn 得到与 forRoot 相同的结果吗? @Injectable({ providedIn: 'root' }) export cla
我是一名优秀的程序员,十分优秀!