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



我有一个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)

以下是代码:

MetadataUtil.ts

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
]
....

最新更新