我使用了ngb评级组件,单击时我正在调用一个函数。这段代码在forloop中,所以我必须通过id获取数据
<ngb-rating [(rate)]=item.Client_Rating id={{item.BookingId}}>
<ng-template let-fill="fill" let-index="index">
<span class="star" [class.filled]="fill === 100" (click)="somethingChanged(item.BookingId)">★</span>
</ng-template>
</ngb-rating>
我写的函数如下
somethingChanged(BookingId){
var num1= ((document.getElementById(BookingId) as HTMLInputElement));
console.log(num1);
}
我在 num1 变量中得到的值是
<ngb-rating aria-valuemin="0" class="d-inline-flex" role="slider" tabindex="0" ng-reflect-rate="9" id="179" aria-valuemax="10" aria-valuenow="9" aria-valuetext="9 out of 10">
我只想要值 9。如何获得它?
试试
somethingChanged(item){
var num1= item.Client_Rating;
console.log(num1);
}
并在函数调用中更改参数:
(click)="somethingChanged(item)"
<ngb-rating name="{{item.BookingId}}" [(ngModel)]="item.Client_Rating" [(rate)]=item.Client_Rating (click)="updateClientRatings(item.BookingId,item.Client_Rating)">
<ng-template let-fill="fill" let-index="index" >
<span class="star" [class.filled]="fill === 100" >★</span>
</ng-template>
</ngb-rating>
这就是我尝试过的,它奏效了!
更改
<ng-template let-fill="fill" let-index="index">
<span class="star" [class.filled]="fill === 100 (click)="somethingChanged(index+1)">
★
</span>
</ng-template>
获取点击值!
我相信您正在寻找的是捕获用户选择新评级时发出的事件:rateChange:事件发射器;
在您的 HTML 中:
<ngb-rating [(rate)]="item.Client_Rating" (rateChange)="somethingChanged(item.BookingId)"></ngb-rating>
在组件中:
somethingChanged(bookingId) {
console.log(this.item.Client_Rating)
}
如果使用 (单击(,则发出的事件将在 (rateChange( 事件之前,因此这就是您获得旧值的原因。