Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击“角度”中的组件时,它不仅一次将整个阵列视为选定阵列_Javascript_Html_Css_Angular_Typescript - Fatal编程技术网

Javascript 单击“角度”中的组件时,它不仅一次将整个阵列视为选定阵列

Javascript 单击“角度”中的组件时,它不仅一次将整个阵列视为选定阵列,javascript,html,css,angular,typescript,Javascript,Html,Css,Angular,Typescript,我正在Angular中实现一个评级组件,我将在另一个组件中使用该组件对语言进行评级。 我的意思是它有多好 我的问题是,当我听到一个数组的点击事件时,我会自动选择第二个数组并给它们两个,或者用颜色填充它们。 可以只单击一个事件并为其提供数据。 我在这个stackblitz中基于的star组件代码 这是我的星组件 <button mat-icon-button *ngFor="let ratingId of ratingArr;index as i" [id]="

我正在Angular中实现一个评级组件,我将在另一个组件中使用该组件对语言进行评级。 我的意思是它有多好

我的问题是,当我听到一个数组的点击事件时,我会自动选择第二个数组并给它们两个,或者用颜色填充它们。 可以只单击一个事件并为其提供数据。 我在这个stackblitz中基于的star组件代码

这是我的星组件

<button mat-icon-button *ngFor="let ratingId of ratingArr;index as i" [id]="'star_'+i" (click)="onClick(i+1)"
        >
  <mat-icon>
    {{showIcon(i)}}
  </mat-icon>
</button>
<mat-error *ngIf="starCount == null || starCount == 0">
</mat-error>

export class StarRatingComponent implements OnInit {
  @Input("rating") private rating = 3;
  @Input("starCount") public starCount = 5;
  @Output() private ratingUpdated = new EventEmitter();

  public ratingArr = [];

  constructor() {

  }

  ngOnInit() {
    for (let index = 0; index < this.starCount; index++) {
      this.ratingArr.push(index);
    }
  }
  onClick(rating: number) {
    this.ratingUpdated.emit(rating);
    return false;
  }

  showIcon(index: number) {
    if (this.rating >= index + 1) {
      return "star";
    } else {
      return "star_border";
    }
  }
}
这是我试图展示的组件,并用数据填充

<div *ngFor="let language of subCategory.languages; let i = index">
        <div class="col-md-8">
         {{language.name}}
         <app-star-rating [rating]="language.rate" [starCount]="starCount" (ratingUpdated)="onRatingChanged($event)"></app-star-rating>
        </div>
      </div>

  onRatingChanged(rating) {
    this.skills.subCategories.map(test => test.languages.filter(res => {
      console.log(res.name);
      res.rate = rating;
    }));
  }

您可以在onRatingChanged函数中通过HTML传递索引以及事件,如下所示:

 <div *ngFor="let language of languages; let i = index">
      <div class="col-md-8">
         {{language.name}}
         <mat-star-rating [rating]="language.rate" [color]="starColor" (ratingUpdated)="onRatingChanged($event,i)"></mat-star-rating>
      </div>
 </div>

@Harmandepsingkalsi这是怎么可能的?你能帮我理解你指的两个数组是什么吗?@Harmandepsingkalsi有两个数组。First有一个id,名称和费率名称:英语,费率:2名称:德语,费率:5费率将显示您在stack blitz中共享的IConStarCode不会谈论您上面提到的问题。它运行完全正常。你能不能也在堆栈闪电战中添加代码?如果可能的话,还包括技能结构object@HarmandeepSinghKalsi好的,我会做的。当tip尝试在stackblitz中添加另一个组件时,u将看到它将选择这两个评级组件。