使用场景
一般情况在{ provide: ‘ServiceName’,…}都尽量使用injectionToken这样可以避免与引入的其他包发生名字的一样而产生冲突的问题
使用方法
import { ReflectiveInjector } from '@angular/core';
var FactorServiceToken= new InjectionToken<string>("FactorService");
...
providers: [
{
provide: FactorServiceToken,
useFactory: () => {
class facClass{
data = 'facClass value';
}
return new facClass();
}
}
],
...
这样就可以有效避免冲突问,早一些的angular用的是OpaqueToken ,感觉一样,没有细究问题要改这个。