使用 InjectionToken 注入?
Injection using an InjectionToken?
正在尝试使用 InjectionToken
.
注入对象
在 AppModule
我有:
export const tokenConfigKey = new InjectionToken('config');
const tokenBasedConfig = {
provide: tokenConfigKey,
useValue: {
key: 'value'
}
}
并且在 AppComponent
:
@Component({
selector: 'my-app',
template:`<h1>Hello Angular Lovers!</h1>`
})
export class AppComponent {
constructor(@Inject('config') config,
@Inject(tokenConfigKey) configByToken) {
}
}
This is a complete stacblitz example
使用字符串键的注入通过,但使用令牌的注入失败。有什么想法吗?
文章
由于 AppModule
导入 AppComponent
并且 AppComponent
从 AppModule
导入 InjectionToken,因此可能存在循环依赖问题。
将令牌移动到单独的位置解决了问题:
token.ts
import { InjectionToken } from '@angular/core';
export const BASE_URL = new InjectionToken<string>('BaseUrl');
app.module.ts
@NgModule({
providers: [{ provide: BASE_URL, useValue: { key: 'http://localhost' } }],
app.component.ts
constructor(@Inject(BASE_URL) configByToken) {
console.log(configByToken);
}
正在尝试使用 InjectionToken
.
在 AppModule
我有:
export const tokenConfigKey = new InjectionToken('config');
const tokenBasedConfig = {
provide: tokenConfigKey,
useValue: {
key: 'value'
}
}
并且在 AppComponent
:
@Component({
selector: 'my-app',
template:`<h1>Hello Angular Lovers!</h1>`
})
export class AppComponent {
constructor(@Inject('config') config,
@Inject(tokenConfigKey) configByToken) {
}
}
This is a complete stacblitz example
使用字符串键的注入通过,但使用令牌的注入失败。有什么想法吗?
文章
由于 AppModule
导入 AppComponent
并且 AppComponent
从 AppModule
导入 InjectionToken,因此可能存在循环依赖问题。
将令牌移动到单独的位置解决了问题:
token.ts
import { InjectionToken } from '@angular/core';
export const BASE_URL = new InjectionToken<string>('BaseUrl');
app.module.ts
@NgModule({
providers: [{ provide: BASE_URL, useValue: { key: 'http://localhost' } }],
app.component.ts
constructor(@Inject(BASE_URL) configByToken) {
console.log(configByToken);
}