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

Posted

技术标签:

【中文标题】在 NGXS 操作中调用后尝试关闭材料小吃吧不起作用【英文标题】:Trying to close a material snackbar after being called in a NGXS action does not work 【发布时间】:2019-09-04 04:37:15 【问题描述】:

在我通过 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
    );

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

NGXS 在 NgZone 之外运行。要解决这个问题:

constructor(
  private readonly snackBar: MatSnackBar,
  private zone: NgZone,
)  

this.zone.run(() => 
  this.snackBar.open(...);
);

【讨论】:

以上是关于在 NGXS 操作中调用后尝试关闭材料小吃吧不起作用的主要内容,如果未能解决你的问题,请参考以下文章

NGXS:测试异步操作:自动订阅不起作用

(android) 小吃吧结束后如何关闭活动?

小吃店不工作颤振NoSuchMethodError

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

NGXS:测试分派的动作不适用于 ofActionDispatched

一段时间后,如何在小吃店自动关闭时更改 vuex 中的状态