【问题标题】:Angular 8 Import Service into Interface/ModuleAngular 8 将服务导入接口/模块
【发布时间】:2020-08-01 18:56:13
【问题描述】:

我有一个服务,在 config.serivce.ts 中称为 ConfigService,我需要获取一个返回值的函数 (getClientID) 并将该值导入模块文件:appAuth.module。 ts

我需要知道如何在这样的文件中从服务函数中注入一个值?

例如在我的 appAuth.module.ts 中:

 @NgModule({
   imports: [
    CommonModule,
    AuthModule.forRoot<any>({
     adapter: getClientID(),
    })],
   providers: [],
   declarations: []
    })
   export class AppAuthModule { }

【问题讨论】:

    标签: angular angular8 angular-services angular-dependency-injection


    【解决方案1】:

    无论您在哪里需要 getClientId() 的结果,您都应该注入 ConfigService 并调用 getClientId() 而不是从环境中读取它。

    据我所知,您的环境文件不应该依赖任何东西。相反,您的服务、组件等应该依赖于环境文件。

    这是来自Angular documentation on dependency injection 的示例。它展示了如何将UserServiceLoggerService 注入(在这种情况下)UserContextService

    @Injectable({
      providedIn: 'root'
    })
    export class UserContextService {
      constructor(private userService: UserService, private loggerService: LoggerService) {
      }
    }
    

    有关如何使用环境文件的示例,请参阅Angular documentation

    【讨论】:

    • 我需要知道如何在这样的文件中注入服务?
    • @MoHalem:我用示例和依赖注入指南的链接更新了答案。
    • 是的,我知道这种方式是,但这是用于注入类,如果我想注入接口或模块怎么办?
    • 你能举个例子来说明你想要达到的目标吗?接口不需要(也不能)注入任何东西,它只声明如何使用其他东西(实现它)。
    • 什么是getClientID?它对整个应用程序来说是全局的吗? AuthModule 来自哪里?它是如何在他们的文档中解决的?
    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2016-06-28
    相关资源
    最近更新 更多