html - fel TS2571: Objektet är av typen 'unknown' när man försöker använda pipe slice i *ngFor
Jag försöker använda NGB Pagination i min Angular-app i en tabell. Men när jag använder pipe slice i min *ngFor, får min Angular fel TS2571: Object är av typen 'unknown' när jag försöker slice. Detta är min kod:
- Min HTML-kod:
<tr *ngFor="let row of documentaryList|slice: (page-1) * pageSize : page * pageSize" class="text-md text-md-center">
<td>{{ row.documentDate }}</td>
<td><a class="text-info" routerLink="details-documentary/{{row._id}}">{{ row.documentName }}</a></td>
<td>{{ row.documentNumber }}</td>
<td>{{ row.documentType }}</td>
<td>{{ row.documentAddress }}</td>
<td>
- Min .ts-kod:
export class ListDocumentaryComponent implements OnInit {
title = 'Documentary';
documentaryList: any;
page = 1;
pageSize = 10;
lengthDocumentList = 0;
constructor(private documentaryService: DocumentaryService) {
}
ngOnInit(): void {
this.getDocumentaryList();
}
getDocumentaryList(): any {
this.documentaryService.getDocumentary()
.subscribe((data: any) => {
this.documentaryList = data.data;
this.lengthDocumentList = this.documentaryList.length;
});
}
}
Tack för din hjälp!
Svar #1
Ändra documentaryList: any; till documentaryList: any[]=[];
I TypeScript kan valet av typer ha en betydande påverkan på kvaliteten och tillförlitligheten i din kod. Medan typen any ger flexibilitet genom att tillåta en egenskap att innehålla värden av vilken typ som helst, avstår den också TypeScripts kärnfördel: typkontroll. Att använda any säger i princip till TypeScript att inaktivera typkontroll och anta minimala begränsningar, vilket kan leda till potentiella problem med typ-säkerhet och minskad kodklarhet. Genom att välja en mer specifik typ, såsom ett objekt, introducerar du mer struktur i din kod. Detta gör det möjligt för TypeScript att utföra typkontroll och ge meningsfulla IntelliSense-förslag och upptäcka typrelaterade fel vid kompileringstid istället för vid körning.
Svar #2
Ett annat sätt :
<tr *ngFor="let item of obj.list.slice((page-1) * pageSize, page * pageSize)" class="text-md text-md-center">
<td>{{ item.prop1 }}</td>
<td>{{ item.prop2 }}</td>
</tr>
Detta fungerar när den loopade listan är en egenskap hos ett objekt (typ any)

