I am using Ionic 3.9 and Angular 5 to create a grading system that will allow people to search a list and use a star system to select a grade (1-5). However there are over 100 different types of things they can grade for and they will never grade all of them.
Usually I just use form builder to create a group of inputs but this time I have over 100 which would just take too long to hardcode and it would make it difficult in the future to add/remove certain items. How can I avoid this?
I need to submit the values to the database with the key being short and the value being grade like
{
RP: 5,
FP: 5,
.....
}
Sample array
this.grades = [
{id: 0, name: 'Parallel Park', short: 'PP', grade: -1},
{id: 1, name: 'Reverse Park', short: 'RP', grade: -1},
{id: 2, name: 'Forward Park', short: 'FP', grade: -1},
];
html
<form name="gradeForm">
<ion-list>
<ion-item *ngFor="let grade of grades">
<h4>{{grade.name}} <a class="float-right" (click)="grade.grade = -1">Reset</a>
</h4>
<span>
<ng-container *ngIf="grade.grade >= 0; else gradeZero">{{grade.short}}-{{grade.grade}}</ng-container>
<ng-template #gradeZero>{{grade.short}}-0</ng-template>
<rating
class="float-right rating"
[(ngModel)]="grade.grade"
readOnly="false"
max="5"
emptyStarIconName="star-outline"
starIconName="star"
nullable="false"
(ngModelChange)="onRatingChange($event)">
</rating>
</span>
</ion-item>
</ion-list>
</form>