错误TypeError:无法读取未定义的属性'ngInjectableDef'

Abu*_*ala 5 javascript angular

我在下面有一个抽象类:

import { Inject } from '@angular/core';
import { TestService } from '../test-service';

export abstract class DummyAbstract {

    constructor (
        private testService: TestService
    ) {

    }

    abstract thisisimp();
}
Run Code Online (Sandbox Code Playgroud)

我有一个孩子上以下课:

import { Injectable } from '@angular/core';
import { DummyAbstract } from './dummy-abstract';

@Injectable({
    providedIn: 'root'
})
export class ThisChild extends DummyAbstract {
    thisisimp() {
        return 'text';
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在其他服务中加载子类时出现问题

import { Injectable } from '@angular/core';
import { ThisChild } from './this-child';

@Injectable({
    providedIn: 'root'
})
export class SomeOtherService {    
    constructor(private thisChild: ThisChild) {

    }
}
Run Code Online (Sandbox Code Playgroud)

它引发以下错误

错误TypeError:无法在NgModuleRef_.push ../ node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get(core.js:9057)的resolveNgModuleDep(core.js:8353)处读取未定义的属性'ngInjectableDef'在injectArgs(core.js:1437)在injectArgs(core.js:1437)在createProviderInstance(core.js:8389)在_callFactory(core.js: 8431)在core.js:1491 在resolveNgModuleDep(core.js:8364) )在NgModuleRef .push ../ node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get(core.js:9057)在注入(core.js:1403)

Pan*_*kar 6

Angular Dependency Injection系统仅提取/解析Injectable编写装饰器的类的依赖关系。您必须自己处理其他事情。

DummyAbstract构造函数具有TestService依赖项的构造函数,并且在使用ThisChildprovider进行扩展时,尚未传递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';
    }
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*Waw 6

由于此问题的 google 搜索结果不多,因此我将在此处提供我的解决方案(与此特定问题无关,但具有相同的错误消息)。所以基本上我也遇到了这个问题:错误类型错误:无法读取未定义的属性 'ngInjectableDef' 在错误开始出现之前和之后,代码中没有任何更改。我所要做的就是删除 node_module 文件夹,刷新节点缓存并重新安装它,它开始工作。据我所知,这与一些有角度的材料变化有关。

  • 谢谢@DanielWaw,我的问题与您所解释的完全相同。当我重新安装 npm 时,它就解决了。 (2认同)