1

尝试使用InjectionToken.

AppModule我有:

    export const tokenConfigKey = new InjectionToken('config');

    const tokenBasedConfig = {
        provide: tokenConfigKey,
        useValue: {
          key: 'value'
      }
    }

并且在AppComponent

    @Component({
      selector: 'my-app',
      template:`<h1>Hello Angular Lovers!</h1>`
    })
    export class AppComponent  {
      constructor(@Inject('config') config,
                  @Inject(tokenConfigKey) configByToken) {
      }
    }

这是一个完整的 stacblitz 示例

使用字符串键的注入正在通过,但使用令牌的注入失败。任何想法为什么?

文章

这是一篇文章,以防有人想玩这个

4

1 回答 1

4

由于AppModule从. AppComponent_ AppComponent_AppModule

将令牌移动到分离解决了这个问题:

令牌.ts

import { InjectionToken } from '@angular/core';
export const BASE_URL = new InjectionToken<string>('BaseUrl');

app.module.ts

@NgModule({
  providers: [{ provide: BASE_URL, useValue: { key: 'http://localhost' } }],

app.component.ts

 constructor(@Inject(BASE_URL) configByToken) {
    console.log(configByToken);
  }
于 2019-02-15T06:02:46.273 回答