【问题标题】:Angular update 8.1 to 8.2 I get many "Cannot read property 'ngInjectableDef' of undefined"角度更新 8.1 到 8.2 我得到很多“无法读取未定义的属性 'ngInjectableDef'”
【发布时间】:2019-12-11 00:09:25
【问题描述】:

从 8.1 更新到 8.2 后,我遇到很多这样的错误

MyComponent.html:6 ERROR TypeError: Cannot read property 'ngInjectableDef' of undefined
    at getInjectableDef (core.js:361)
    at resolveNgModuleDep (core.js:30377)
    at NgModuleRef_.get (core.js:31578)
    at injectInjectorOnly (core.js:734)
    at ɵɵinject (core.js:744)
    at injectArgs (core.js:837)
    at core.js:16346
    at _callFactory (core.js:30486)
    at _createProviderInstance (core.js:30429)
    at resolveNgModuleDep (core.js:30388)```


【问题讨论】:

    标签: angular8


    【解决方案1】:

    我找到了一个原因……

    我有很多这样的地方

    export class AbstractSth {
        constructor(protected service: SomeService) {}
    }
    
    export class SpecialSth extends AbstractSth {
        // ... special stuff (no constructor needed in 8.1)
    }
    

    事实证明,在 8.2 中,SpecialSth 类需要自己的带有 super() 调用的构造函数,因为不知何故,现在只有子类注入了所需的属性,而没有构造函数,则没有注入任何东西,而继承的父构造函数似乎在注入逻辑中被忽略。

    所以这解决了问题:

    export class SpecialSth extends AbstractSth {
        constructor(protected service: SomeService) {
            super(service);
        }
        // ... special stuff
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2019-04-28
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多