javascript - Angular viser feil fra en tidligere filversjon, men feilen er faktisk løst
Jeg har en metode getMonths() og jeg ønsket å legge til et argument year til den. Metoden brukes bare ett sted:
<div *ngFor="let month of getMonths()" class="calendar-table">
...
</div>
Hvis jeg legger til argumentet til metoden getMonths(year) og endrer koden over til å kalle getMonths(selectedYear), gir Angular meg følgende feil:
ERROR in src/app/user-calendar/user-calendar.component.ts:108:27 - error TS2554: Expected 1 arguments, but got 0.
108 for(let month of this.getMonths()) {
~~~~~~~~~~~
src/app/user-calendar/user-calendar.component.ts:35:13
35 getMonths(year) {
~~~~
An argument for 'year' was not provided.
Merk at Angular ser ut til å bruke den forrige versjonen av malen min, hvor selectedYear ikke er oppgitt. Jeg prøvde å stoppe ng serve og kjøre det igjen, jeg prøvde også å kjøre ng build --prod, men feilen vedvarer.
I motsetning til i feilmeldingen ser malen slik ut:
<div *ngFor="let month of getMonths(selectedYear)" class="calendar-table">
...
</div>
Svar #1
Jeg har aldri sett praksisen med å iterere over verdien som returneres fra en funksjon, så jeg sjekket denne referansen - *ngFor som bruker en funksjon, returnerer en løkke. Jeg har ikke en god forklaring på hvorfor problemet ditt oppstår, men jeg vil foreslå å endre løkken din til å iterere over et array som er tildelt verdien av det getMonths returnerte.