错误:没有商店的提供者!在使用 Angular 4.0 尝试 @ngrx/store 时
Posted
技术标签:
【中文标题】错误:没有商店的提供者!在使用 Angular 4.0 尝试 @ngrx/store 时【英文标题】:Error: No provider for Store! when trying @ngrx/store with Angular 4.0 【发布时间】:2017-10-31 05:19:18 【问题描述】:问题: 错误:商店没有提供者!
我正在 main.ts 中引导存储模块:
platformBrowserDynamic().bootstrapModule(AppModule,[
provideStore(
characters,
vehicles
)
]);
并注入到vehicle.component.ts:
constructor(
private _route: ActivatedRoute,
private _router: Router,
private _vehicleService: VehicleService,
private _store: Store<any>
)
完整的源代码在这里:GitHub, 最后一个版本运行on GitHub Pages
附言。将 Store 添加到提供程序会导致另一个错误: 无法解析 Store 的所有参数:(?, ?, ?)。
【问题讨论】:
【参考方案1】:我遇到了这个错误,因为在我的组件中自动导入了 Store
from
import Store from '@ngrx/store/src/store'
而不是
import Store from '@ngrx/store'
; .无论如何,这是在 Angular 5 中
【讨论】:
刚刚遇到同样的问题,甚至没有注意到!感谢这篇文章,你为我节省了一些时间:) 谢谢,由于某种原因,我从ngrx/store
自动导入导入的商店【参考方案2】:
在app.module.ts
中添加:
// Make sure you import from @ngrx/store
import StoreModule from '@ngrx/store';
@NgModule(
imports: [
StoreModule.forRoot( characters, vehicles ),
...
【讨论】:
我们应该通过真正的减速器吗?因为它只是组件测试 我不确定我是否遵循,答案是修复提供程序错误。但出于测试目的,我不明白为什么不通过实际的减速器。【参考方案3】:为了完整起见,Angular 5 / Ngrx 4.1.1 将是(在 app.module.ts 中):
import StoreModule from '@ngrx/store';
import reducers from './reducers/reducers';
@NgModule(
imports: [
StoreModule.forRoot(reducers),
...
],
...
有一个完整的例子here
【讨论】:
以上是关于错误:没有商店的提供者!在使用 Angular 4.0 尝试 @ngrx/store 时的主要内容,如果未能解决你的问题,请参考以下文章
Angular 4:错误:没有 AngularFireDatabase 的提供者
Angular 4 错误:没有 HttpClient 的提供者
使用 Jasmine 间谍进行 Angular 2 组件测试“没有 Http 提供者!”错误