简体   繁体   English

在进度条中使用随机数时出现 Angular ExpressionChangedAfterItHasBeenCheckedError

[英]Angular ExpressionChangedAfterItHasBeenCheckedError while using random numbers in progress bar

I get this ExpressionChangedAfterItHasBeenCheckedError when i am using random numbers progress bar in my html grid table.It says "ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: some value. Current value: some value.".当我在 html 网格表中使用随机数进度条时,我收到此 ExpressionChangedAfterItHasBeenCheckedError。它说“ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。先前值:某个值。当前值:某个值。”。 Someone please help me with the issue.有人请帮我解决这个问题。

<nav class="navbar navbar-expand-sm bg-primary navbar-dark">
  <ul class="navbar-nav">
    <li class="nav-item">
      <a class="nav-link" routerLinkActive="active">
        <button class="btn btn-primary" (click)="goToAddUser()">Add User</button>
      </a>
    </li>
  </ul>
</nav>
<div class="panel panel-primary">
  <div class="panel-heading">
    <h2>User List</h2>
  </div>
  <div class="panel-body">
    <table class="table table-striped">
      <thead>
      <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Email</th>
        <th>Actions</th>
        <th>Progress</th>
      </tr>
      </thead>
      <tbody>
      <tr *ngFor="let user of users | async">
        <td>{{user.firstname}}</td>
        <td>{{user.lastname}}</td>
        <td>{{user.email}}</td>
        <td>
          <button (click)="goToEditUser(user.id)" class="btn btn-info">Update</button>
          <button (click)="deleteUser(user.id)" class="btn btn-danger" style="margin-left: 10px">Delete</button>
          <button (click)="goToViewUser(user.id)" class="btn btn-info" style="margin-left: 10px">Details</button>
        </td>
        <td>
          <mat-progress-bar [value]="number" style="margin-right: 300px"></mat-progress-bar>
          {{ number }}%
        </td>
      </tr>
      </tbody>
    </table>
  </div>
</div>

The getRandomNumber() return value changes after angular change detection already checked its value. getRandomNumber() 返回值在角度变化检测已经检查其值后发生变化。 To understand the error better, read this article:要更好地理解错误,请阅读这篇文章:

Here's one solution, make a class field called randomNumber and assign it to the value of getRandomNubmer().这是一个解决方案,创建一个名为 randomNumber 的类字段并将其分配给 getRandomNubmer() 的值。

class YourComponentClass { randomNumber : number = this.getRandomNumber(); ... }

In Html在 HTML 中

<td> <mat-progress-bar [value]="randomNumber" style="margin-right: 300px">
</mat-progress-bar> {{ randomNumber }} </td>

if you want to change your randomNumber just create a click event handler to reassign randomNumber to getRandomNumber() method如果你想改变你的 randomNumber 只需创建一个点击事件处理程序将 randomNumber 重新分配给 getRandomNumber() 方法

You need to manually check for changes.您需要手动检查更改。

// Import
import { Component, OnInit, ChangeDetectorRef } from '@angular/core';

// Inject
constructor(private cd: ChangeDetectorRef)

// Call after making changes in component
someMethod() {
 this.cd.detectChanges();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM