|  | @@ -0,0 +1,56 @@
 | 
	
		
			
				|  |  | +import { CommonModule } from '@angular/common';
 | 
	
		
			
				|  |  | +import { Component, OnInit } from '@angular/core';
 | 
	
		
			
				|  |  | +import { Input, Output, EventEmitter } from '@angular/core';
 | 
	
		
			
				|  |  | +import { IonIcon } from '@ionic/angular/standalone';
 | 
	
		
			
				|  |  | +import { addIcons } from 'ionicons';
 | 
	
		
			
				|  |  | +import { star } from 'ionicons/icons';
 | 
	
		
			
				|  |  | +import { starOutline } from 'ionicons/icons';
 | 
	
		
			
				|  |  | +addIcons({star,starOutline})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@Component({
 | 
	
		
			
				|  |  | +  selector: 'edit-rating-star',
 | 
	
		
			
				|  |  | +  templateUrl: './edit-rating-star.component.html',
 | 
	
		
			
				|  |  | +  styleUrls: ['./edit-rating-star.component.scss'],
 | 
	
		
			
				|  |  | +  standalone: true,
 | 
	
		
			
				|  |  | +  imports: [
 | 
	
		
			
				|  |  | +    IonIcon,CommonModule
 | 
	
		
			
				|  |  | +  ],
 | 
	
		
			
				|  |  | +})
 | 
	
		
			
				|  |  | +export class EditRatingStarComponent{
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  @Input() score: number = 0; // 默认分值为0
 | 
	
		
			
				|  |  | +  @Input() scoreMax: number = 5; // 最大分值
 | 
	
		
			
				|  |  | +  starList: boolean[] = []; // 星星状态数组
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  @Output() onScoreChange: EventEmitter<number> = new EventEmitter<number>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  constructor() {
 | 
	
		
			
				|  |  | +    this.updateStarList();
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ngOnChanges() {
 | 
	
		
			
				|  |  | +    this.updateStarList();
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 更新星星数组
 | 
	
		
			
				|  |  | +  private updateStarList() {
 | 
	
		
			
				|  |  | +    this.starList = Array(this.scoreMax).fill(false);
 | 
	
		
			
				|  |  | +    for (let i = 0; i < this.score; i++) {
 | 
	
		
			
				|  |  | +      this.starList[i] = true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  // 打分方法
 | 
	
		
			
				|  |  | +  rate(index: number) {
 | 
	
		
			
				|  |  | +    if (this.score === index + 1) {
 | 
	
		
			
				|  |  | +      // 如果点击的是当前分值,清零
 | 
	
		
			
				|  |  | +      this.score = 0;
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +      // 否则更新分值
 | 
	
		
			
				|  |  | +      this.score = index + 1;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    this.updateStarList();
 | 
	
		
			
				|  |  | +    this.onScoreChange.emit(this.score); // 触发分值变化事件
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |