Javascript 错误类型错误:无法读取属性';ngInjectableDef';未定义的
我在下面有一个抽象类:Javascript 错误类型错误:无法读取属性';ngInjectableDef';未定义的,javascript,angular,Javascript,Angular,我在下面有一个抽象类: import { Inject } from '@angular/core'; import { TestService } from '../test-service'; export abstract class DummyAbstract { constructor ( private testService: TestService ) { } abstract thisisimp(); } 我有一个孩子的
import { Inject } from '@angular/core';
import { TestService } from '../test-service';
export abstract class DummyAbstract {
constructor (
private testService: TestService
) {
}
abstract thisisimp();
}
我有一个孩子的班级如下:
import { Injectable } from '@angular/core';
import { DummyAbstract } from './dummy-abstract';
@Injectable({
providedIn: 'root'
})
export class ThisChild extends DummyAbstract {
thisisimp() {
return 'text';
}
}
当我尝试在其他服务中加载子类时,问题就出现了
import { Injectable } from '@angular/core';
import { ThisChild } from './this-child';
@Injectable({
providedIn: 'root'
})
export class SomeOtherService {
constructor(private thisChild: ThisChild) {
}
}
它抛出以下错误
错误类型错误:无法读取未定义的属性“ngInjectableDef”
在ResolvingModuleDep(core.js:8353)
在NgModuleRef.push../node\u modules/@angular/core/fesm5/core.js.NgModuleRef.get
(core.js:9057)
注入时(core.js:1403)
at injectArgs(core.js:1437)
在core.js:1491
at_callFactory(core.js:8431)
在createProviderInstance(core.js:8389)
在resolveNgModuleDep(core.js:8364)
在NgModuleRef.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef.get
(core.js:9057)
注入时(core.js:1403)
角度相关性注入系统仅提取/解析相关性
对于编写了可注入的
装饰器的类。你必须自己处理其他事情
DummyAbstract
构造函数具有TestService
依赖项的构造函数,当您使用ThisChild
提供程序进行扩展时,您尚未将TestService
传递给DummyAbstract
的构造函数。每当出现这种情况时,必须使用super
方法将依赖项显式地传递给父类以调用基类构造函数
export class ThisChild extends DummyAbstract {
constructor(testService: TestService) { // no private or public
super(testService); //calling base class constructor with dependency.
}
thisisimp() {
return 'text';
}
}
由于这个问题没有太多的谷歌搜索结果,我将在这里提供我的解决方案(与这个问题无关,但有相同的错误消息)。 所以基本上我也遇到了这个问题: 错误类型错误:无法读取未定义的属性“ngInjectableDef” 在开始出现错误之前和之后,代码中没有任何更改。 我所要做的就是删除node_模块文件夹,刷新节点缓存并重新安装,然后它就开始工作了。
据我所知,这与一些角度材质的变化有关。不要在内部使用模拟类对象 mockClassName=测试床(mockClassName): 使用实际导入的类对象,如下所示
mockClassName=TestBed(ClassName):谢谢@DanielWaw,我的问题和你解释的完全一样。当我重新安装npm时,它就解决了。我刚刚重新启动了服务器,它对我很有效。我遇到了相同的错误--
(承诺中):TypeError:无法读取未定义TypeError的属性“ngInjectableDef”:无法读取getInjectableDe上未定义的属性“ngInjectableDef”…