我正在查看in-memory-web-api的实现,并且有以下代码:
@Injectable()
export class InMemoryBackendService {
protected config: InMemoryBackendConfigArgs = new InMemoryBackendConfig();
^^^^^^
...
constructor(
@Inject(InMemoryBackendConfig) @Optional() config: InMemoryBackendConfigArgs
^^^^^^
) {
...
据我了解,模式如下:
- 定义类属性并在不使用 DI 的情况下实例化依赖项
- 可选地注入依赖项
如果用户通过 DI 提供修改后的依赖项,它将被注入,并且没有 DI 实例化的默认依赖项将被覆盖。我怀疑模块RequestOptions
中可能有类似的东西。HTTP
这是一种常见的模式吗?
编辑:
事实证明,这in-memory-web-api
并不完全是我要问的模式。假设,我有一个类A
使用B
可注入的类实例和 token B
。所以他们都注册了根注入器:
提供者:[A,B]
现在,如果用户想要自定义B
,他可以在同一个令牌下注册自定义版本,从而有效地覆盖原来的B
:
providers: [{provide:B, useClass: extendedB}]`
这是如何RequestOptions
在http
模块中扩展的。