javascript - 为什么 Angular Stripe 集成需要 ChangeDetectorRef.detectChanges()?

标签 javascript angular typescript stripe-payments

I'm reading through this tutorial on integrating stripe elements with Angular我很好奇为什么 onChange 方法最后会调用 detectChanges()onChange 方法作为事件监听器添加到 strip 卡,如果 onChange 接收到一个错误,它将分配一个错误。

onChange({ error }) {
  if (error) {
    this.error = error.message;
  } else {
    this.error = null;
  }
  this.cd.detectChanges();
}

最佳答案

我猜这与 Angular Change Detection Strategy 有关。

每次在组件中传播事件(鼠标、单击、输入、XHR 等)时,默认策略都会检查 View 。此策略不适用于复杂的应用程序,因为性能可能很糟糕。

另一种方法是使用OnPush 策略。仅当 @Input 已更改或您明确要求使用 ChangeDetectorRef.detectChanges();

检测更改时,此策略才会重新呈现 View

关于javascript - 为什么 Angular Stripe 集成需要 ChangeDetectorRef.detectChanges()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343256/

相关文章:

css - Angular 2 & 4 - ng-pick-datetime 覆盖组件样式表

Angular 2 组件未导航到另一个组件

javascript - 给定计数的随机数

javascript - 为什么我的 Javascript 代码返回 object 对象?

javascript - 如何使用 for 或 while 循环迭代到 100 并使用 javascript 显示每次迭代的总和?

javascript - 如何在AngularJS中的select方法中传递值

typescript - Angular 2自定义表单输入

javascript - 当使用 JQuery 淡出跨度时,我的输入框向左跳转。如何让它滑动?

angular - 在 typescript 中找不到名称 'exports' 错误

angular - 如何在 Angular 2 中为单元测试创​​建新事件?