- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
切换到 Angular 5.2.3 并运行 ng cli
后linter 规则为 "deprecation": true
我在许多测试中遇到以下错误:
get is deprecated: from v4.0.0 use Type<T> or InjectionToken<T>
提示的行是这样的
fixture.debugElement.injector.get(MyService)
与 MyService
是一个用于依赖注入(inject)的类。
我不知道新语法应该是什么,因为
fixture.debugElement.injector.get<MyService>(MyService)
给出一个编译错误 Argument of type 'typeof MyService' is not assignable to parameter of type 'Type<MyService> | InjectionToken<MyService>'.
使用注入(inject)器以避免弃用错误的正确方法是什么?
编辑:请参阅下面的答案,了解 Angular9 更新。
编辑:这似乎与 MyService 是一个抽象类有关。如果我使用非抽象类,.get<T>(T)
语法有效。
编辑:修复显然正在等待一些公关工作 - https://github.com/angular/angular/pull/25222
最佳答案
更好的是,您可以尝试将您的服务转换为 Type,然后像这样使用注入(inject)器:
import { Type } from '@angular/core';
fixture.debugElement.injector.get<MyService>(MyService as Type<MyService>)
关于angular - get 已弃用 : from v4. 0.0 使用 Type<T> 或 InjectionToken<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48660938/
我目前正在学习新的 Angular 框架,我正在尝试制作一个动态搜索栏,它接受一个服务名称作为参数,以便它动态解析一个服务来查询后端服务。 为此,我使用了一个 Injector,并在 ngOnInit
我正在尝试在延迟加载模块中提供 APP_BASE_HREF 注入(inject) token ,然而,工厂方法根本没有被调用。 在这里https://github.com/MaurizioCascia
我不是 Angular 的新手,通常我知道如何处理“No provider for XYZ”错误,但在这种情况下,我不知道 Angular 对“本地化键前缀”意味着什么 我的组件是 kendo-pag
我正在尝试测试处理 SignalR 连接的 Angular 服务,它将 SignalR 的代码作为 InjectionToken。 这是提供程序文件: // signalr-provider.ts i
我正在开发 Angular 应用程序,当我打开我的项目时,它给了我如下错误 ERROR NullInjectorError: R3InjectorError(IndexModule)[Injectio
在我的 Angular 应用程序上运行 jasmine 测试时出现此错误。 Error: StaticInjectorError(DynamicTestModule)[MyEditDialogComp
尝试使用 InjectionToken 注入(inject)对象。 在AppModule中我有: export const tokenConfigKey = new InjectionToke
我正在编写一个 Angular 库,我需要在其中在模块导入的 .forRoot() 中传入一个配置对象。 我正在尝试使用 InjectionToken 执行此操作(显然是正确的方法),但出现 AoT
我是 Angular 4 Jasmine 单元测试的新手。 请帮助我获得附加组件的完整测试范围。 我已经为翻译模块添加了子依赖项,但我仍然收到错误:没有 InjectionToken USE_DEFA
我正在尝试按照 this 制作具有 ngx-translate 功能的 Angular 应用程序教程。 我执行了所有步骤,但出现错误:“异常:调用节点模块失败,出现错误:错误:没有 Injection
我正在尝试在一个包含子组件的组件中进行一些测试: 这是父组件模板: 当我尝试测试父组件时,这个“snackbar”组件给我带来了问题:“snackbar”组件与 injectionToken 有依
为什么我会得到 Error: StaticInjectorError(AppServerModule)[NgModuleFactoryLoader -> InjectionToken MODULE_M
我正在尝试将表单数据插入云 Firestore 数据库中。下面是我的 x.component.ts 文件,我在其中编写的构造函数中遇到错误 private firestore: AngularFire
我有这样的用于 Azure AD 身份验证的配置包装器 import { APP_INITIALIZER, InjectionToken, NgModule } from '@angular/core
我正在使用 Angular Materials 开发 Angular 项目。项目已使用 Angular Materials 正确设置,编译时没有任何问题,并且我能够使用多个 Angular Mater
当我启动我的 Angular 2 应用程序时,该应用程序始终处于加载阶段。 在 chrome 开发控制台中,我可以看到以下内容: Error: (SystemJS) core_1.Injection
这个问题在这里已经有了答案: NullInjectorError: No provider for InjectionToken angularfire2.app.options (4 个答案) 关
我知道 Stackoverflow 上有一些类似的问题,但它们并没有完全回答我的问题。 在我的 Angular 项目中运行 Karma 测试时,出现以下错误:NullInjectorError: No
我正在学习如何实现 Dependency Injection 的各种方法关于 Angular 5。众所周知,Angular 5 有 3 种不同的方法,用于在声明依赖项时声明提供者的 key / tok
我正在使用 VS 2017 和 Angular 2 + asp.netcore 模板开发一个项目。默认项目运行良好,但是当我在 app.module.ts 中导入 ReactiveFormsModul
我是一名优秀的程序员,十分优秀!