在Angular中,当启动服务器后遇到StaticInjectorError错误时,解决方法如下

在Angular中编写以下代码:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

在终端上运行”ng serve”命令并在浏览器中打开localhost:4200,然后打开检查工具,出现以下错误。


StaticInjectorError(AppModule)[RouterOutlet -> ChildrenOutletContexts]: 
  StaticInjectorError(Platform: core)[RouterOutlet -> ChildrenOutletContexts]: 
    NullInjectorError: No provider for ChildrenOutletContexts!

通过搜索找到了下面的文章。

1:将RouterModule(或者由forRoot或forChildren方法生成的其“版本”之一)导入声明了使用该指令的组件的模块中。
2:必须调用RouterModule的forRoot方法。否则,指令所需的服务将无法初始化。

因为原文中写着这样,所以我进行了如下编辑。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule } from '@angular/router';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    RouterModule,
    RouterModule.forRoot([])
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

我成功解决了错误。

广告
将在 10 秒后关闭
bannerAds