PrimeNG ConfirmationService不等待答案

时间:2020-09-25 12:44:26

标签: angular promise observable primeng

我有一个具有以下功能的父组件:

@ViewChild('currentTab') currentTab: ChildComponent;  
  
nextTab(): void {
  if (this.currentTab.save()) {
    this.activeIndex++; 
  }
}

以及子组件上的以下方法:

save(): boolean {
  return this.confirmationService.confirm({
    message: 'Are you sure?',
    accept: () => true,
    reject: () => false
  });
}

问题:父组件中的条件语句不等待答案,而是通过执行this.activeIndex++;变为'true'。我在做什么错了?

谢谢。

1 个答案:

答案 0 :(得分:0)

JavaScript 总是同步单线程。因此,表达式this.currentTab.save()被解析,if(....)语句被立即求值。根据PrimeNg source codeconfirm(...)方法触发一个信号以显示弹出对话框,然后返回this这是一个真实的价值。因此,预计activeIndex总是会增加。

要获得所需的内容,请在父组件中导入并使用确认服务:

nextTab(): void {
  this.confirmationService.confirm({
     message: 'Are you sure?',
     accept: () => this.activeIndex++,
     reject: () => //Do something else
  });
}