我从NGXS操作调用小吃栏后,小吃栏没有关闭。仅在指定的毫秒后,但不是从关闭“操作”开始
我尝试使用'action'参数和'ref.close()'方法关闭它都无效。
但是,如果我通常在不使用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
});
答案 0 :(得分:0)
以前曾经遇到过-只需订阅调度(调度更新状态后返回),然后做小吃吧。
答案 1 :(得分:0)
NGXS 在 NgZone 之外运行。要解决此问题:
constructor(
private readonly snackBar: MatSnackBar,
private zone: NgZone,
) { }
this.zone.run(() => {
this.snackBar.open(...);
});