对于这种情况,我如何使用 Angular 15
中的
inject()
功能?
import { datadogRum } from '@datadog/browser-rum';
constructor(...) {
datadogRum.init({
applicationId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
clientToken: 'EX-app',
...
});
}
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)
正如您在 docs 中所读到的,您只能将 Angular 的依赖注入机制与使用 Angular 装饰器的类一起使用,例如
@Injectable()
、@Component()
、@Directive
,...您正在尝试注入一个函数它没有 Angular 装饰器。 Angular 的 DI 并不是为处理这些问题而设计的,它会抛出错误,这是完全可以预料到的。
回答你的问题:在这种情况下你不能使用
inject()
。