inject() Angular 使其变得困难

问题描述 投票:0回答:1

对于这种情况,我如何使用 Angular 15

 中的 
inject() 功能?

  • 构造函数()的使用方式:
      import { datadogRum } from '@datadog/browser-rum';

      constructor(...) {
          datadogRum.init({
              applicationId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
              clientToken: 'EX-app',
              ...
          });
      }
  • 使用inject()的方式:
          import { datadogRum } from '@datadog/browser-rum';

          private datadogRum_ = inject(datadogRum.init);

          ngOnInit() {
                 datadogRum_({
                        applicationId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
                        clientToken: 'EX-app',
                        ...
                  });
          }

使用inject()会导致以下错误:

ERROR NullInjectorError: R3InjectorError(AppModule)[function () { -> function () { -> function () {]: 
  NullInjectorError: No provider for function () {!
    at NullInjector.get (core.mjs:7493:27)
    at R3Injector.get (core.mjs:7914:33)
    at R3Injector.get (core.mjs:7914:33)
    at R3Injector.get (core.mjs:7914:33)
    at ChainedInjector.get (core.mjs:12084:36)
    at lookupTokenUsingModuleInjector (core.mjs:3201:39)
    at getOrCreateInjectable (core.mjs:3246:12)
    at ɵɵdirectiveInject (core.mjs:10041:12)
    at ɵɵinject (core.mjs:622:60)
    at inject (core.mjs:705:12)
javascript angular inject
1个回答
0
投票

正如您在 docs 中所读到的,您只能将 Angular 的依赖注入机制与使用 Angular 装饰器的类一起使用,例如

@Injectable()
@Component()
@Directive
,...您正在尝试注入一个函数它没有 Angular 装饰器。 Angular 的 DI 并不是为处理这些问题而设计的,它会抛出错误,这是完全可以预料到的。

回答你的问题:在这种情况下你不能使用

inject()

© www.soinside.com 2019 - 2024. All rights reserved.