gpt4 book ai didi

angular - 如何在函数中注入(inject)服务?

转载 作者:行者123 更新时间:2023-12-04 07:24:25 27 4
gpt4 key购买 nike

假设我有一项服务 MyService

@Injectable({
providedIn: 'root',
})
export class LookupsService {
constructor(private readonly store: Store<never>) {}

}
如何在以下函数中注入(inject)它
export function convertToTreeNodes(
orgs: OrganizationModel[],
service: LookupsService
): OrganizationNodeInterface[] {
//...
}
我收到一条错误消息 Lookup service was not provided感谢您的帮助

最佳答案

服务只能注入(inject)到由 Angular 维护生命周期的东西中。导出的普通函数没有生命周期,因此 Angular 无法注入(inject)任何依赖项。
你有几个选择:

  • 将此函数转换为服务并注入(inject)查找服务。我更喜欢这个选项,因为它很干净。
  • 第二种选择可能是在应用程序模块构造函数内的定位器服务中保存注入(inject)器的实例,并稍后使用它来获取服务。例如
  •     // app.module
    export class AppModule {
    constructor(private injector: Injector) {
    ServiceLocator.init(injector);
    }
    }

    // blah.ts
    export function blah() {
    ServiceLocator.get(LookupsService)
    }


    //service-locator.ts
    export class ServiceLocator {
    private injector: Injector;
    init(injector) {
    this.injector = injector;
    }
    get(klass) {
    return this.injector.get(klass);
    }
    }


    关于angular - 如何在函数中注入(inject)服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68295673/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com