在 NGXS 操作中调用后尝试关闭材料小吃栏不起作用



从 NGXS 操作调用小吃栏后,小吃栏没有关闭。仅在指定的毫秒之后,而不是从关闭的"操作"之后

我尝试使用"action"参数和"ref.close(("方法关闭它,但都不起作用。

但是,如果我从组件中正常调用它而不使用 NGXS 操作,它会像预期的那样关闭。

NGXS行动

单击"关闭"不起作用。它保持打开状态。

但是,如果我单击关闭,然后单击不是按钮的其他地方,它会立即关闭

@Action(SomeAction)
  someAction(
    { setState, getState }: StateContext<SomeModel>,
    { payload }: SomeAction
  ) {
    ...
      if (payload.data.amount < 1000) {
         ...
      } else {
        this.snackbar.open('Error', 'Close', {
          duration: 4000
         });
        return;
      }

来自组件的正常调用

单击"关闭"按预期工作

  test() {
    this.snackbar.open('test', 'Close', {
      duration: 4000
    });

之前遇到过这种情况 - 只需订阅调度(当调度更新状态时返回(,然后做小吃店。

NGXS在NgZone之外运行东西。要解决此问题,请执行以下操作:

constructor(
  private readonly snackBar: MatSnackBar,
  private zone: NgZone,
) { }
this.zone.run(() => {
  this.snackBar.open(...);
});

最新更新