角度加载按钮 ExpressionChangedAfterItHasBeenCheckedError

r3plica

我在我的应用程序中使用了这个组件,并且在大多数情况下它运行良好。它的ts文件如下所示:

import { Component, Input, OnInit, OnChanges } from '@angular/core';
import { Router } from '@angular/router';

import { LoadingService } from '@pyb-services/loading.service';

@Component({
  selector: 'pyb-loading-button',
  templateUrl: './loading-button.component.html',
  styleUrls: ['./loading-button.component.scss']
})
export class LoadingButtonComponent implements OnInit, OnChanges {
  @Input() link: any[] = []
  @Input() target: string
  @Input() navigateAfter: boolean
  clicked: boolean = false
  loading: boolean = false; // Has to be false by default, because sometimes everything has loaded before this button has come on the page

  constructor(
    private router: Router,
    private loadingService: LoadingService
  ) {
  }

  ngOnInit() {
    this.loadingService.onLoadingChanged.subscribe(isLoading => this.loading = isLoading);
  }

  ngOnChanges() {
    this.navigateWhen();
  }

  click(): void {
    this.clicked = !this.clicked;
    this.navigateWhen();
  }

  private navigateWhen(): void {
    if ((!this.loading || this.navigateAfter) && this.clicked && this.link.length) {
      this.router.navigate(this.link); 

      this.clicked = false;
    }
  }
}

模板文件看起来像这样:

<button class="btn btn-xl btn-secondary" type="button" [disabled]="loading && !navigateAfter" (click)="click()" [scrollTo]="target"
  offset="10" [ngSwitch]="loading">
  <span class="spinner" *ngSwitchCase="true">
    <span class="bounce1"></span>
    <span class="bounce2"></span>
    <span class="bounce3"></span>
  </span>
  <span *ngSwitchDefault>Next step</span>
</button>

就像我说的,它似乎工作正常。但是,如果另一个进程启动一个 http 请求,那么我会收到错误消息:

ExpressionChangedAfterItHasBeenCheckedError:检查后表达式已更改。以前的值:'ngSwitch:false'。当前值:'ngSwitch:true'。

这是在抱怨加载按钮组件中loading属性变化有谁知道我该如何解决这个问题?

苏尼尔·辛格

这是在loading触发更改检测时正在更改的变量的问题为避免此错误,请loading在单独的线程中设置 的值

  ngOnInit() {
    this.loadingService.onLoadingChanged.subscribe(isLoading => 
       Promise.resolve(null).then(() => this.loading = isLoading)
    );
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ExpressionChangedAfterItHasBeenCheckedError角度

来自分类Dev

基本按钮禁用时的ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

页面加载后在角度8中触发动画,ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

加载指示器上的 ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

使用单选按钮组打开角度模态窗口会导致ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

ExpressionChangedAfterItHasBeenCheckedError 原因

来自分类Dev

错误错误:ExpressionChangedAfterItHasBeenCheckedError:检查表达式后,表达式已更改。角度的

来自分类Dev

面对“ ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改”以显示/隐藏加载程序

来自分类Dev

Ionic / Angular:避免 ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

Angular TemplateRef ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

ExpressionChangedAfterItHasBeenCheckedError - 共享服务

来自分类Dev

Angular:如何摆脱 ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

使用滚动事件时ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

ExpressionChangedAfterItHasBeenCheckedError in (click) for mat-chip

来自分类Dev

角度需要重新加载页面才能显示fb共享按钮

来自分类Dev

带有角度ng-repeat的动画加载更多按钮

来自分类Dev

在每个按钮上单击角度后加载组件

来自分类Dev

动态为matTooltip分配值时的ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

生成导致 ExpressionChangedAfterItHasBeenCheckedError 的随机 id 属性

来自分类Dev

Angular 8 - 如何解决“ExpressionChangedAfterItHasBeenCheckedError”

来自分类Dev

角7:使用Rxjs观察器时ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

Angular 8上的ExpressionChangedAfterItHasBeenCheckedError和ngOnInit上调用的方法

来自分类Dev

Angular ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。光盘

来自分类Dev

ExpressionChangedAfterItHasBeenCheckedError:有兩個同級 Angular 組件

来自分类Dev

尝试以反应形式理解和解决 ExpressionChangedAfterItHasBeenCheckedError

来自分类Dev

通过加载控制器将后退按钮保持成角度吗?

来自分类Dev

如何在单击按钮时以角度有条件地加载组件

来自分类Dev

视频加载事件角度

来自分类Dev

加载角度视图

Related 相关文章

  1. 1

    ExpressionChangedAfterItHasBeenCheckedError角度

  2. 2

    基本按钮禁用时的ExpressionChangedAfterItHasBeenCheckedError

  3. 3

    页面加载后在角度8中触发动画,ExpressionChangedAfterItHasBeenCheckedError

  4. 4

    加载指示器上的 ExpressionChangedAfterItHasBeenCheckedError

  5. 5

    使用单选按钮组打开角度模态窗口会导致ExpressionChangedAfterItHasBeenCheckedError

  6. 6

    ExpressionChangedAfterItHasBeenCheckedError 原因

  7. 7

    错误错误:ExpressionChangedAfterItHasBeenCheckedError:检查表达式后,表达式已更改。角度的

  8. 8

    面对“ ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改”以显示/隐藏加载程序

  9. 9

    Ionic / Angular:避免 ExpressionChangedAfterItHasBeenCheckedError

  10. 10

    Angular TemplateRef ExpressionChangedAfterItHasBeenCheckedError

  11. 11

    ExpressionChangedAfterItHasBeenCheckedError - 共享服务

  12. 12

    Angular:如何摆脱 ExpressionChangedAfterItHasBeenCheckedError

  13. 13

    使用滚动事件时ExpressionChangedAfterItHasBeenCheckedError

  14. 14

    ExpressionChangedAfterItHasBeenCheckedError in (click) for mat-chip

  15. 15

    角度需要重新加载页面才能显示fb共享按钮

  16. 16

    带有角度ng-repeat的动画加载更多按钮

  17. 17

    在每个按钮上单击角度后加载组件

  18. 18

    动态为matTooltip分配值时的ExpressionChangedAfterItHasBeenCheckedError

  19. 19

    生成导致 ExpressionChangedAfterItHasBeenCheckedError 的随机 id 属性

  20. 20

    Angular 8 - 如何解决“ExpressionChangedAfterItHasBeenCheckedError”

  21. 21

    角7:使用Rxjs观察器时ExpressionChangedAfterItHasBeenCheckedError

  22. 22

    Angular 8上的ExpressionChangedAfterItHasBeenCheckedError和ngOnInit上调用的方法

  23. 23

    Angular ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。光盘

  24. 24

    ExpressionChangedAfterItHasBeenCheckedError:有兩個同級 Angular 組件

  25. 25

    尝试以反应形式理解和解决 ExpressionChangedAfterItHasBeenCheckedError

  26. 26

    通过加载控制器将后退按钮保持成角度吗?

  27. 27

    如何在单击按钮时以角度有条件地加载组件

  28. 28

    视频加载事件角度

  29. 29

    加载角度视图

热门标签

归档