从 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(...);
});