【问题标题】:Getting same value for progress bar angular获得相同的进度条角度值
【发布时间】:2020-09-03 11:29:44
【问题描述】:

为进度条角度获取相同的值。我需要为每一行设置不同的值。

以下是我的代码,我在 html 部分使用了该私人号码。我无法将 getRandomNumber() 方法提供给

这会在控制台引发一些错误。

export class UserlistComponent implements OnInit {



users: Observable<User[]>;
 // private number: number = this.getRandomNumber();

  constructor(private _service: NgserviceService, private _route: Router) {
  }

  ngOnInit() {
    this.reloadData();
  }

  getRandomNumber(){
    return Math.floor(Math.random()*(100)+1);
  }

  get number() {
    return getRandomNumber();
  }

  reloadData() {
    this.users = this._service.getUserList().pipe(
      map(arrayUsers => arrayUsers.map(arrayUser => ({
        id: arrayUser[0],
        email: arrayUser[1],
        firstname: arrayUser[2],
        lastname: arrayUser[3],
      })))
    );
  }
}

HTML代码:

<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" [bufferValue]="number+1"
                            [appProgressBarColor]="number"></mat-progress-bar>
          {{ number }}%
        </td>
      </tr>
      </tbody>
    </table>
  </div>
</div>

上面的代码是我的html代码。我在这里使用了数字,我也不能在html代码中使用getRandomNumber()。请帮我解决这个问题。

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow!请通过解释您想要实现的行为来改进您的描述。进度条应该指示什么?请编辑您的帖子并向我们展示您的一些代码,以便我们了解您的意图。
  • 好的,感谢您更新您的问题。现在很容易解决您的问题。按照下面我更新的答案来解决您的问题。

标签: javascript html angular typescript progress-bar


【解决方案1】:

您正在使用 *ngFor 正确地遍历您的用户 问题是您只调用 number=getRandomNumber() 一次,并且在其他任何地方都使用相同的数字。

你可能想这样做:

[value]=getRandomNumber()

or you use a getter in your ts-code:
get number {
  return getRandomNumber()
}
Then you can use [value]=number in your html-code

我认为这应该可以解决您的问题。

【讨论】:

  • 我在 mat-progress-bar 使用 getRandomNumber() 是在控制台引发 expressionchangedafterithasbeencheckederror 并给我错误的值
  • 我更新了我的答案。如果对您有帮助,请随意接受,如果没有,请随时提出问题
  • 我已经使用了您的解决方案,但在检查后出现了 expressionchangedafterithasbeencheckederror,您可以在图片中看到。请帮我解决问题。 @Chrissi Grilus
  • 是的,我认为您有一个类似的问题:您为 [value] 和 [appProgressBarColor] 提供了“数字”。每次调用时,此 getter 方法都会返回 getRandomNumber()。所以每次都会有不同的颜色。您可以看到,条形图的进度值没有应有的颜色。 Angular 检查你两次给同一个组件的“数字”是否相同,它不是 => 颜色!= 值。 Angular 将您保存在这里。您应该在 ngOnInit 的地图功能中为您的用户对象分配进度
  • 您还可以生成一个长度与用户相同的数组,然后从与 userArray 中的用户相同的索引中获取 randomNumber。如果您只想要随机数而不在用户对象上创建属性,这将是一个技巧
猜你喜欢
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2012-03-01
  • 1970-01-01
相关资源
最近更新 更多