如何在angular中初始化.forRoot()中的第三方模块
我正在使用Angular 6+为我们的项目构建一个内部库。 我正在使用如何在angular中初始化.forRoot()中的第三方模块,angular,toastr,angular-toastr,Angular,Toastr,Angular Toastr,我正在使用Angular 6+为我们的项目构建一个内部库。 我正在使用.forRoot()方法注册文档中的全局服务 我的图书馆将使用ngx toastr提供通知。由于我不希望每个项目都直接处理ngx toastr的所有选项,因此我将其大部分抽象为通知服务 按照ngx toastr的工作方式,您可以通过将这些全局选项传递到ToastrModule.forRoot()来设置全局选项 如何将配置为作为我自己的forRoot()的一部分的sturmodule? 在.forRoot()中添加任何代码显然是
.forRoot()
方法注册文档中的全局服务
我的图书馆将使用ngx toastr提供通知。由于我不希望每个项目都直接处理ngx toastr
的所有选项,因此我将其大部分抽象为通知
服务
按照ngx toastr
的工作方式,您可以通过将这些全局选项传递到ToastrModule.forRoot()
来设置全局选项
如何将配置为作为我自己的forRoot()的一部分的sturmodule
?
在.forRoot()
中添加任何代码显然是个坏主意,但是在我的@NgModule()
中直接初始化它是正确的方法吗?像这样:
@NgModule({
导入:[ToastrModule.forRoot(/*选项转到此处?*/)],
声明:[],
出口:[]
})
导出类ToolsCoreModule{
static forRoot():ModuleWithProviders{
返回{
ngModule:ToolsCoreModule,
提供者:[],
};
}
}
如果团队中有人决定在他们自己的模块初始化中也调用
ToastrModule.forRoot()
,这将如何交互?通过提供者导出通知服务的根模块应该是在导入声明中使用ToastrModule.forRoot()
的唯一根模块
forRoot()
调用是一种约定,而不是框架强制执行的内容。其他人在定义他们的NgModules时不应该调用它,如果它已经被调用了
仅在根应用程序模块中调用并导入.forRoot()
结果,AppModule
。在任何其他模块中导入它,特别是在延迟加载的模块中,这与意图相反,并且可能会产生运行时错误
forRoot()
和forChild()
是分别在根模块和功能模块中配置服务的方法的常规名称
如果您的ToastrModule
的全局配置从未更改,我认为按照您在代码片段中提出的方式进行操作没有任何错误
但是,如果配置可能会根据ToolsCoreModule
的使用者而改变,则不应该为每个不同的配置调用forRoot()
,因为按照惯例这是错误的。在这种情况下,您可以考虑在ToStudio调用的第三个参数周围创建包装器,以通过通用配置(例如:代码>此。toStruService。错误(MSG,标题,CONFIG)< /COD>)。