Angular 10, TypeScript: 3.9.7.
I'm trying to group a list of books by their CRN numbers. The "books" array is passed in the TextbooksComponent through @Input from a parent component.
My component.ts:
...
export class TextbooksComponent {
@Input() books?: Array<Book>;
}
...
My component.html:
...
<div *ngFor="let book of books; let i=index" class="books">
<div *ngIf="i>0 && book?.CRN === books[i-1]?.CRN; else bookCRN">
<hr>
</div>
<ng-template #bookCRN>
<h3>crn: {{ book?.CRN }}</h3>
</ng-template>
<app-book
[textbook]="book">
</app-book>
</div>
...
I'm getting the following error when compiling, even after I use "?" to make my variables optional and checking i>0.
ERROR in ...textbooks.component.html:16:42 - error TS2532: Object is possibly 'undefined'.
16 <div *ngIf="i>0 && book?.CRN === books[i-1]?.CRN; else bookCRN">
~~~~~~~~~~
How do I fix this? I tried adding books?.length>1
too. It won't let me access the previous element in the array books[i-1]. I don't want to initialize and make up value for at least two elements in the books array. The data needs to be fetched from the server. Thanks.