上QQ阅读APP看书,第一时间看更新
Overriding constants
Not everything, though, is a class that needs to be resolved; sometimes it is a constant. For those cases, instead of using useClass, we can use useValue, like so:
providers: [ { provide: 'a-string-token', useValue: 12345678 } ]
This is not really a class type, so you can't write this in a constructor:
constructor(a-string-token) . // will not compile
That wouldn't compile. What we can do instead is to use the @Inject decorator in the following way:
constructor( @Inject('a-string-token') token) // token will have value 12345678
The useValue is no different from useClass when it comes to how to override it. The difference is of course that we need to type useValue in our instruction to override rather than useClass.