繁体   English   中英

Angular 8:错误:未捕获(承诺):NullInjectorError:StaticInjectorError(AppModule)

[英]Angular 8 : Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)

我有一个 angular 8 应用程序,出现以下错误:

core.js:4002 ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[ScreenComponent -> MetadataUtil]: 
  StaticInjectorError(Platform: core)[ScreenComponent -> MetadataUtil]: 
    NullInjectorError: No provider for MetadataUtil!
NullInjectorError: StaticInjectorError(AppModule)[ScreenComponent -> MetadataUtil]: 
  StaticInjectorError(Platform: core)[ScreenComponent -> MetadataUtil]: 
    NullInjectorError: No provider for MetadataUtil!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:725)
    at resolveToken (core.js:11918)
    at tryResolveToken (core.js:11862)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:11764)
    at resolveToken (core.js:11918)
    at tryResolveToken (core.js:11862)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:11764)
    at resolveNgModuleDep (core.js:20234)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:20905)
    at injectInjectorOnly (core.js:628)
    at resolvePromise (zone.js:852)
    at resolvePromise (zone.js:809)
    at zone.js:913
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Object.onInvokeTask (core.js:26247)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:422)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:195)
    at drainMicroTaskQueue (zone.js:601)
    at ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:502)
    at invokeTask (zone.js:1693)

以下是代码:

元数据实用程序

export class MetadataUtil {

    constructor(
        private http: HttpClient,
        private httpCache: HttpCacheService
    ) { }

    postData() {
       //...
    }
}
ScreenComponent.ts

import { MetadataUtil } from './MetadataUtil.ts';


@Component({
    selector: 'comp1',
    templateUrl: `./comp1.component.html`,
    styleUrls: ['./comp1.component.scss']
    , encapsulation: ViewEncapsulation.None
})
@Injectable({
    providedIn: 'root'
})

@NgModule({
    imports: [SharedModule, AngularBootstrapToastsModule]
})

export class ScreenComponent implements OnInit {
    constructor(
        private metadata: MetadataUtil
    ) { }
    
    getData(){
       this.metadata.postData();

    } 

}


因此 MetadataUtil.ts 文件中的 postData 方法之前是静态的,并且 ScreenComponent 将其用作导入。 我将其更改为非静态并更改了 ScreenComponent 中的引用,并且。 这个错误开始出现。 我在网上看到过类似的帖子,人们为此提出了解决方案,但我一直无法理解这个错误是关于什么以及为什么会抛出这个错误。 有人可以解释一下这个错误是什么吗? 谢谢

根据最新版本,您应该使用HttpClientModule而不是HttpModule

像这样导入

import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [ ],
  imports: [
    ......
    HttpClientModule
  ]
....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM