有没有办法使用Angular的DI将依赖注入装饰器工厂?我们将以下代码作为简化示例:
@Component({ selector: 'hello-component',template: '<div>Hello World</div>' }) export class HelloComponent { @PersonName() name: string; ngAfterViewInit() { console.log(`Hello,${this.name}`); } }
这里,PersonName装饰器的预期行为是它访问Person依赖项,并使用它来设置类的name属性.
是否有可能为上面的代码实现PersonName装饰器?
目前,要将依赖项注入我的装饰器(以及其他额外的模块类),我正在使用此解决方法:
import {Injectable,Injector} from "@angular/core"; @Injectable() export class ExtraModuleInjector { private static injector; public static get(token: any) { if (ExtraModuleInjector.injector) { return ExtraModuleInjector.injector.get(token); } } constructor(public injector: Injector) { ExtraModuleInjector.injector = injector; } }