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.