SAP Spartacus FeatuturesConfig
2021-01-30 本文已影响0人
华山令狐冲
源代码:
import { Injectable } from '@angular/core';
import { Config } from '../../config/config-tokens';
@Injectable({
providedIn: 'root',
useExisting: Config,
})
export abstract class FeaturesConfig {
features?: {
[featureToggle: string]: string | boolean;
};
}

FeatureConfig需要注入config-tokens里提供的Config.
Configuration injection token创建的factory方法:


而Configuration又依赖于DefaultConfiguration,因此需要先注入后者:



调用_currentInjector.get拿到DefaultConfigurationToken的实例。

_currentInjector的类型是R3Injector:


records字段里有注入好的实例:

this.records是一个map,首先检查传入的token是否已经在map里存在:


这个record里的属性很多:


感觉有很多module都使用了DefaultConfigurationChunk作为injection token
?

以这个cmsStoreConfigFactory工厂为例:cmsStoreConfigFactory

看个例子:

provideDefaultConfigFactory是一个helper function,接收另一个factory函数作为输入。
调用工厂函数获得value:

遍历这119条记录:

