javascript - Angular näyttää virheen vanhasta tiedostoversiosta, mutta virhe on itse asiassa korjattu
Minulla on metodi getMonths() ja halusin lisätä siihen parametrin year. Metodia käytetään vain yhdessä paikassa:
<div *ngFor="let month of getMonths()" class="calendar-table">
...
</div>
Jos lisään argumentin metodille getMonths(year) ja muutan yllä olevaa koodia kutsumaan getMonths(selectedYear), Angular antaa minulle seuraavan virheen:
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.
Huomaa, että Angular näyttää käyttävän aiempaa versiota mallistani, jossa selectedYear ei ole määritelty. Yritin lopettaa ng serve ja käynnistää sen uudelleen, yritin myös suorittaa ng build --prod, mutta virhe pysyy.
Toisin kuin virheilmoituksessa, malli näyttää tältä:
<div *ngFor="let month of getMonths(selectedYear)" class="calendar-table">
...
</div>
Vastaus #1
En ole koskaan nähnyt käytäntöä, jossa toistetaan funktion palauttama arvo, joten tarkistin tämän viitteen - *ngFor käyttäen funktiota, palauttaa silmukan. Minulla ei ole hyvää selitystä siihen, miksi ongelmasi ilmenee, mutta haluaisin ehdottaa, että muutat silmukkaasi niin, että se toistaisi taulukkoa, jolle on asetettu se arvo, jonka getMonths palautti.