Angular:共享模块的每个模块的不同配置

时间:2018-01-31 08:35:33

标签: angular

我有一个共享模块,它提供了其他几个模块使用的组件。某些组件需要一些配置设置。

使用共享模块的模块需要为共享模块提供不同的配置设置。

如何在不强制该模块中的每个组件提供配置的情况下提供模块特定的配置设置?

SharedModule:
- ComponentA (which needs some ConfigSettings)    

ModuleB:
   contains several components using ComponentA from SharedModule using ModuleB-specific ConfigSettings

ModuleC:
   contains several components using ComponentA from SharedModule using ModuleC-specific ConfigSettings

有没有办法为ModuleB和ModuleC中的ComponentA提供特定于模块的ConfigSettings,这样我就不需要在ModuleB和ModuleC中的每个组件上提供ConfigSetting? (我只想为每个模块提供一次设置。)

我尝试了以下内容:

  • 为ConfigSetting
  • 定义了一个InjectionToken
  • 使用ModuleB和ModuleC中模块级别的InjectionToken提供不同版本的ConfigSetting

结果: - 在SharedModule中的ComponentA中注入ConfigSetting总是获得相同的实例(取决于首先加载ModuleB或ModuleC中的哪个模块)

1 个答案:

答案 0 :(得分:0)

您可以在类中进行配置,并将该类注入具有不同配置的组件中。之后,每个模块(示例中的模块B和模块C)可以为此配置类提供不同的实现。

在共享模块中,您可以为配置类定义接口,并在其他模块中使用Injection Token来提供此接口的实现。

这是一个简单的例子:

f2