首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullInjectorError: R3InjectorError(AppModule)[路由器->路由器->路由器]:NullInjectorError:没有路由器提供程序

NullInjectorError: R3InjectorError(AppModule)[路由器->路由器->路由器]:NullInjectorError:没有路由器提供程序
EN

Stack Overflow用户
提问于 2020-09-29 09:20:26
回答 4查看 17.4K关注 0票数 10

我有一个已发布的库,其中包含一个在其模板中使用routerLink的组件。在我的应用程序中安装了这个库之后,我得到了错误NullInjectorError: R3InjectorError(AppModule)路由器-> ->路由器: NullInjectorError: No for路由器!

在库中的模块中导入RouterModule,如下所示:

代码语言:javascript
复制
@NgModule({
  declarations: [
    Component
  ],
  exports: [
    Component
  ],
  imports: [
    CommonModule,
    RouterModule,
    TranslateModule
  ]
})
export class LibWithComponentModule {
}

在我的应用程序中,RouterModule配置如下:

代码语言:javascript
复制
const routes: Routes = [{
  path: '',
  component: RootComponent
}];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

app.module.ts看起来如下所示:

代码语言:javascript
复制
  declarations: [
    AppComponent,
    RootComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    LibWithComponentModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

但我以为RouterModule会被提供?我做错了什么?

EN

回答 4

Stack Overflow用户

发布于 2021-08-11 15:30:10

使用@angular/router的服务也出现了同样的错误。我可以通过替换

代码语言:javascript
复制
@Injectable()

使用

代码语言:javascript
复制
@Injectable({
  providedIn: 'root'
})

在服务类里面。

票数 3
EN

Stack Overflow用户

发布于 2022-01-07 14:12:52

对我来说,问题有点像@NilsTitjgat explained,但我不得不将库保留为dependency

如果像我一样,您必须这样做,那么问题在于您的应用程序导入了导入到这个库中的库的另一个版本。

意思是如果

MainApp

代码语言:javascript
复制
"dependencies": { 
  "@my/lib": "1.0.0",
  "@another/lib": "1.0.0" 
}

@my/lib

代码语言:javascript
复制
"dependencies": { 
  "@another/lib": "1.2.0"  // <-- The version is higher
}

那么您将面临同样的错误。解决这一问题的方法是将@another/lib版本从1.0.0插入到1.1.0

是的,你不应该这样进口它。如果可以的话,把它放在@NilsTitjgat提到的peerDependencies下面

票数 1
EN

Stack Overflow用户

发布于 2021-07-09 05:46:10

HttpClient导入到.service.ts

代码语言:javascript
复制
import { HttpClient } from '@angular/common/http';

HttpClientModule导入app.module.ts并将HttpClientModule添加到imports数组中

代码语言:javascript
复制
import { HttpClientModule } from '@angular/common/http';

 imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule
  ],
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64116587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档