【问题标题】:Error: No provider for Store! when trying @ngrx/store with Angular 4.0错误:没有商店的提供者!在使用 Angular 4.0 尝试 @ngrx/store 时
【发布时间】: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 的所有参数:(?, ?, ?)。

【问题讨论】:

    标签: angular ngrx ngrx-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

    【讨论】:

      猜你喜欢
      • 2018-03-23
      • 2018-04-19
      • 2020-06-26
      • 2018-12-06
      • 2017-12-26
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多