【发布时间】:2021-12-07 20:06:55
【问题描述】:
组件.ts
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
projectRating = 2;
projectRatingArr=[];
animeArr=[];
counter;
isHalf = false;
ngOnInit() {
this.updateStars();
this.getArrayValues(0);
}
updateStars() {
for(let i=0; i<this.projectRating;i++){
this.projectRatingArr.push(i)
}
console.log(this.projectRatingArr);
}
getArrayValues(index) {
setInterval(() => {
if(index == this.projectRatingArr.length)
return;
this.animeArr.push(this.projectRatingArr[index]);
index++;
}, 50);
}
}
html
<div class="wrapper">
<div class="item">
<div *ngFor="let i of [0,1,2,3,4]">
<div class="fav fav-star-default "></div>
</div>
</div>
<div class="item">
<div *ngFor="let i of animeArr;last as isLast">
<div class="fav fav-star is-animating"></div>
</div>
</div>
</div>
我尝试保留一个名为 isHalf 的变量,每当我将 ProjectRating 设为 4.5 或任何 (0.5) 时,我都必须获取 ngFor 循环中的最后一个星并隐藏该元素的右半部分。
我在做这个的时候已经没有想法了。
我只想在评分为 0.5 时将星修改为半星
我尝试在顶部添加一个类来隐藏,但剩下的一半看起来还是空的。
任何帮助将不胜感激
这是我的 stackblitz 链接https://stackblitz.com/edit/angular-joszev
【问题讨论】:
-
也许 css 渐变可以在某些方面有所帮助?否则我会考虑制作你自己的 svg 并填充一半的星星,这可能是实现这一目标的最简单方法。
-
@SiddAjmera - 有趣的是,“自定义十进制评级”示例目前似乎不适用于 ng-bootstrap component。
-
@ConnorsFan,我确实注意到了。 :) 一段时间后我可能会举出一个例子。
标签: javascript css angular