Angular - *ngIf 需要点击 "change" 屏幕 - ApplePayJS(?)

Angular - *ngIf require click to "change" screen - ApplePayJS (?)

我在使用 ApplePayJS 实现 Apple Pay 时遇到一个奇怪的错误。

支付完成后,有一个连接后台的功能。后端发送 return 表示付款一切正常。

紧接着我使用了一个函数,该函数负责使用 ngIf 更改“面板”。

与我在另一笔付款中使用的方法完全相同,在调试功能时一切正常,直到最后,即更改面板。

不幸的是,与其他支付方式不同,使用 ApplePayJS 您需要“物理地”单击任何元素以执行代码中的任何操作。它甚至可以是一个简单的复选框。然后在代码中完成的所有事情也在 UI.

中完成

我可以展示代码,但经过大量测试后,这与最终功能代码无关。

总结一下:

Apple Pay 按钮/支付激活=> 付款确认=> 调试执行时代码中的所有内容以及每个函数中的每个 console.log 都显示正确的值=> UI 只有在与按钮/复选框等代码中的任何对象交互后才会发生变化

Apple Pay后的回调在ngZone外执行可能会出现。如果是这样,Angular 将不会检查更改。

为确保刷新视图,您可以:

  • 在 this.ngZone.run(() => {...})
  • 中执行回调代码
  • 过程完成后调用 this.changeDetectorRef.detectChanges()

(ChangeDetectorRef 或 NgZone 是注射剂)