Jer*_*oen 3 dependency-injection typescript angular
我正在尝试在我的 Angular 10 应用程序中创建一个APP_INITIALIZER,其中工厂具有多个依赖项。一个依赖项是 an InjectionToken<string>,但我无法像使用构造函数那样注入它。我得到:
错误...
装饰器在这里无效。
以下是重现此行为的方法(另请参阅此 StackBlitz 示例):
export const FOOBAR = new InjectionToken<string>('FOOBAR');
@Injectable({providedIn: 'root'})
export class FooService { dummy = 'value'; }
function initializerFactory(
fooService: FooService,
@Inject(FOOBAR) fooBar: string,
) {
return () => {
fooService.dummy = `Changed ${fooService.dummy}, added ${fooBar}`;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在app.module:
providers: [
{ provide: FOOBAR, useValue: 'token value' },
{ provide: APP_INITIALIZER, useFactory: initializerFactory, multi: true, deps: [FooService, FOOBAR] },
],
Run Code Online (Sandbox Code Playgroud)
如何使用 Angular 将Inject令牌添加到工厂方法中?
只需删除@Inject(...). 它们deps会按照您列出的确切顺序“神奇地”注入,作为函数的参数。
所以这:
{
provide: APP_INITIALIZER,
useFactory: initializerFactory,
multi: true,
deps: [FooService, FOOBAR]
},
Run Code Online (Sandbox Code Playgroud)
将FooService作为第一个参数和FOOBAR第二个参数注入到您的工厂中。
| 归档时间: |
|
| 查看次数: |
2006 次 |
| 最近记录: |