11

我正在尝试以角度导出一个常量,我需要设置一个键,其值将从服务返回。我尝试使用以下代码:

这是我的 user-config.ts 文件:

export const USER_CONFIG = {
    username: new UserService().getUsername()
}

这是我想要注入的 UserService 文件:

 export class UserService{
        constructor(someOtherService: SomeOtherService)
        getUsername() {
            return this.someOtherService.getDetails('some/url')
        }
    }

我无法解决这个问题。需要帮忙。

4

2 回答 2

5

Angular 中的常量可以使用InjectionToken构造:

export const USER_CONFIG = new InjectionToken('User Configuration', {
  factory: () => {
    return {
      // You can inject the UserService to get the username
      username: inject(UserService).getUsername()
    }
  }
});

由于常量是一个注入令牌,因此可以将其注入应用程序的其他部分:

export class AppComponent {

  constructor(@Inject(USER_CONFIG) config) {
    console.log(config.username)
  }
}

StackBlitz 示例

于 2019-08-30T11:58:48.957 回答
0

试试这个。您必须传递服务实例

const va = (userService : UserService) => {
    return {
        username : userService.getUsername()
    }
}

export const eV = va(userService)
于 2019-08-30T11:52:59.200 回答