You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular项目中星级评分点击持久变色功能实现求助

Angular星级评分:点击后保持会话内选中状态的解决方案

针对你已实现hover变色效果,需要点击后在浏览器会话中永久保留选中状态的需求,可通过以下步骤修改代码:

1. 组件类(.ts)修改

添加状态变量并结合sessionStorage实现状态持久化:

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

@Component({
  selector: 'app-star-rating',
  templateUrl: './star-rating.component.html',
  styleUrls: ['./star-rating.component.scss']
})
export class StarRatingComponent implements OnInit {
  starsArray: boolean[] = new Array(5);
  selectedStarIndex: number | null = null;

  ngOnInit(): void {
    // 页面初始化时从会话存储恢复选中状态
    const savedIndex = sessionStorage.getItem('selectedStarIndex');
    if (savedIndex) {
      this.selectedStarIndex = parseInt(savedIndex, 10);
    }
  }

  onStarClick(index: number): void {
    this.selectedStarIndex = index;
    // 将选中索引存入会话存储,刷新页面后仍保留
    sessionStorage.setItem('selectedStarIndex', index.toString());
  }
}

2. 模板(.html)修改

绑定点击事件和高亮类:

<div class="stars-container mt-2">
  <div *ngFor="let star of starsArray; let i = index" 
       class="star" 
       [class.highlighted]="selectedStarIndex === i"
       (click)="onStarClick(i)">
    <svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 24 24">
      <path fill="#ffffff"
            d="m7.69 19.346l1.614-5.33L5.115 11h5.216L12 5.462L13.67 11h5.215l-4.189 3.015l1.614 5.331L12 16.07z" />
    </svg>
  </div>
</div>

3. 可选:支持取消选中

若需要再次点击同一颗星取消选中状态,修改点击事件函数:

onStarClick(index: number): void {
  // 再次点击则切换选中/取消状态
  this.selectedStarIndex = this.selectedStarIndex === index ? null : index;
  
  if (this.selectedStarIndex === null) {
    sessionStorage.removeItem('selectedStarIndex');
  } else {
    sessionStorage.setItem('selectedStarIndex', index.toString());
  }
}

原理说明

  • 利用selectedStarIndex记录被点击星星的DOM索引
  • 通过sessionStorage存储索引值,确保浏览器会话内(页面刷新、跳转后返回)状态不会丢失
  • 你的SCSS代码已通过.star.highlighted ~ .star选择器实现了"点击星星后左侧所有星星同步高亮"的逻辑,只需给目标星星添加highlighted类即可触发该效果

内容的提问来源于stack exchange,提问作者carloslopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:46