获取打字稿角度6中的ngb-rating值

时间:2018-09-07 13:02:48

标签: angular angular6 ng-bootstrap rating

我使用了ngb-rating组件,单击时我正在调用一个函数。这段代码在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)">&#9733;</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。如何获得它?

4 个答案:

答案 0 :(得分:1)

只需尝试

somethingChanged(item){    
    var num1= item.Client_Rating;
    console.log(num1);
}

并在函数调用中更改参数:

(click)="somethingChanged(item)"

答案 1 :(得分:0)

<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" >&#9733;</span>
                                    </ng-template>
                                  </ngb-rating>

这是我尝试过的,并且有效!

答案 2 :(得分:0)

更改

<ng-template let-fill="fill" let-index="index">
 <span class="star" [class.filled]="fill === 100 (click)="somethingChanged(index+1)">
  &#9733;
 </span>
</ng-template>

获得点击值!

答案 3 :(得分:0)

我相信您正在寻找的是捕获用户选择新评分时发出的事件:rateChange:EventEmitter;

在您的HTML中:

<ngb-rating [(rate)]="item.Client_Rating" (rateChange)="somethingChanged(item.BookingId)"></ngb-rating>

在您的组件中:

somethingChanged(bookingId) {
   console.log(this.item.Client_Rating)
}

如果使用(单击),则发出的事件将在(rateChange)事件之前,因此这就是为什么您获得旧值的原因。