Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在angular中初始化.forRoot()中的第三方模块_Angular_Toastr_Angular Toastr - Fatal编程技术网

如何在angular中初始化.forRoot()中的第三方模块

如何在angular中初始化.forRoot()中的第三方模块,angular,toastr,angular-toastr,Angular,Toastr,Angular Toastr,我正在使用Angular 6+为我们的项目构建一个内部库。 我正在使用.forRoot()方法注册文档中的全局服务 我的图书馆将使用ngx toastr提供通知。由于我不希望每个项目都直接处理ngx toastr的所有选项,因此我将其大部分抽象为通知服务 按照ngx toastr的工作方式,您可以通过将这些全局选项传递到ToastrModule.forRoot()来设置全局选项 如何将配置为作为我自己的forRoot()的一部分的sturmodule? 在.forRoot()中添加任何代码显然是

我正在使用Angular 6+为我们的项目构建一个内部库。 我正在使用
.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>)。