Html 如何计算角度的平均值?

Html 如何计算角度的平均值?,html,angular,Html,Angular,我尝试在人们评论明星数量时添加平均评论信息,然后计算出电影的平均明星数。我不知道如何在html中获得我的平均值 这是我的HTML文件: <div *ngFor="let movie of movieData"> <table class="table table-bordered"> <thead> <tr> <th>Reviewer</th> <th>St

我尝试在人们评论明星数量时添加平均评论信息,然后计算出电影的平均明星数。我不知道如何在html中获得我的平均值

这是我的HTML文件:

<div *ngFor="let movie of movieData">
  <table class="table table-bordered">
    <thead>
      <tr>
        <th>Reviewer</th>
        <th>Stars</th>
        <th>Reviews</th>
        <th>Action</th>
      </tr>
    </thead>
    <tbody>
      <tr *ngFor="let info of movie.reviews">
        <td>{{info.name}}</td>
        <td>{{info.stars}}</td>
        <td>{{info.comment}}</td>
      </tr>
    </tbody>
  </table>
</div>
<p>Average rating: <b> {{avgRating}} </b></p>

有人能帮忙吗?

这里有一些问题

首先,存在定义为输入的AVG:

@Input() avgRating: any;
但它似乎不应该是一个输入,如果它是一个输入,你不需要计算它,然后它在模板中显示为与输入相同的值

另一方面,有一个
avg
var,它应该具有平均值。但是进行数学运算来设置
avg
值的
getMovie()
方法似乎从未被调用过

在我看来更符合逻辑的是,在执行订阅回调时,去掉
avgRating
var,然后调用
getMovie(idx)
on
getOneMovie()
方法:

  getOneMovie() {
    let observable = this.httpService.oneMovie(this.movieID);
    observable.subscribe((data) => {
      this.movieData = data;
      getMovie(idx)
    });
  }
并在模板中使用此
avg
var:

<p>Average rating: <b> {{ avg }} </b></p>
平均评分:{{avg}


实际上,
getMovie(idx)
idx
参数似乎不用于任何事情,因此您可能也希望删除此参数。

如果一部电影有评论,您可以在获得评论后立即计算平均值。例如:

getOneMovie() {
let observable = this.httpService.oneMovie(this.movieID);
observable.subscribe((data) => {
  this.movieData = data;

  if (this.movieData.reviews != null && this.movieData.reviews.length > 0) {
    let sum = 0;
    this.movieData.reviews.forEach(review => sum += review.stars);
    this.avg = sum/this.movieData.reviews.length;
  } else {
    this.avg = 0; # Or whatever you want to show if there are no reviews for the movie
  }
});
}
上面的代码检查电影是否至少有1次回顾以计算平均值,否则将平均值设置为0

然后在模板中用

{{avg}}
正如@jeprubio提到的,我会删除
Input()
getMovie(idx)
,因为它们没有被使用

最后,请记住,您没有初始化
avg
,如果
getOneMovie()
由于任何原因失败,您将永远无法将其设置为数字(导致模板中出现错误)

getOneMovie() {
let observable = this.httpService.oneMovie(this.movieID);
observable.subscribe((data) => {
  this.movieData = data;

  if (this.movieData.reviews != null && this.movieData.reviews.length > 0) {
    let sum = 0;
    this.movieData.reviews.forEach(review => sum += review.stars);
    this.avg = sum/this.movieData.reviews.length;
  } else {
    this.avg = 0; # Or whatever you want to show if there are no reviews for the movie
  }
});
}
{{avg}}