Angular Nx和NgRx:应用程序无响应

时间:2018-06-23 09:56:25

标签: angular ngrx ngrx-store

请协助,我正在用ngRx学习角度nx,并尝试实现基本状态。我有工作区,内部有一个名为company-portal的应用程序,具有自己的状态。创建状态我运行了以下命令:

   ng generate ngrx company-state --module=apps/company-portal/src/app/app.module.ts  --onlyEmptyRoot

在我创建一个名为login的库之后,如下所示:

   ng g lib shared/login --routing --lazy --parent-module=apps/company-portal/src/app/app.module.ts

并添加了如下状态:

   ng g ngrx login-state --module=libs/shared/login/src/lib/shared-login.module.ts

然后我创建了一个组件:

   ng g c view/login-form --project=shared-login

在component.ts文件中,我注入了一个商店并添加了如下登录功能:

   constructor(private store: Store<LoginSharedState>) {}

   login() {
     this.store.dispatch(new loginActions.LoginShared());
   }

我有一个执行登录功能的按钮,但是当我单击该按钮时,应用程序冻结(停止响应)。我实现了storeFreeze并添加了metaReducer,但仍然无法正常工作。 单击登录按钮时,我应该添加些什么以使应用程序响应。

1 个答案:

答案 0 :(得分:0)

它在您的代码中不可见,并且回答这个问题还为时已晚。但是也许我的见解可以帮助某个人。

我几乎每天都使用NgRX,并且我唯一看到它冻结(与NgRX有关)的情况是,有一种效果不会发出新动作,并且您没有使用选项{{ 1}},例如两个片段中展示的例子:

{ dispatch: false }
// Freezing
createEffect(() => this.actions$.pipe(
  ofType(myAction),
  tap(() => { /* do something */ })
))

没有必要使用// Not Freezing createEffect(() => this.actions$.pipe( ofType(myAction), tap(() => { /* do something */ }) ), { dispatch: false }) 运算符,但这是一个常见的用例。就像我说的,这里重要的是,它不会在流中发出新的动作。您可以在official effects docs的最后一个片段中看到另一个演示。