javascript - Angular menunjukkan kesalahan dari versi file sebelumnya tetapi kesalahan tersebut sebenarnya sudah diperbaiki


Saya memiliki sebuah metode getMonths() dan saya ingin menambahkan argumen year padanya. Metode ini hanya digunakan di satu tempat:

<div *ngFor="let month of getMonths()" class="calendar-table">
...
</div>

Jika saya menambahkan argumen ke metode getMonths(year) dan mengubah kode di atas untuk memanggil getMonths(selectedYear), Angular memberi saya kesalahan berikut:

    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.

Perhatikan, bahwa Angular tampaknya menggunakan versi sebelumnya dari template saya, di mana selectedYear tidak disediakan. Saya mencoba menghentikan ng serve dan menjalankannya lagi, saya juga mencoba menjalankan ng build --prod tetapi kesalahannya tetap ada.

Berbeda dengan pesan kesalahan, templatenya terlihat seperti ini:

<div *ngFor="let month of getMonths(selectedYear)" class="calendar-table">
...
</div>

Jawaban #1

Saya belum pernah melihat praktik mengulang nilai yang dikembalikan dari sebuah fungsi, jadi saya memeriksa referensi ini - *ngFor menggunakan sebuah fungsi, mengembalikan sebuah loop. Saya tidak memiliki penjelasan yang baik mengapa masalah Anda terjadi, tetapi saya ingin menyarankan untuk mengubah loop Anda agar mengulang sebuah array yang diberi nilai dari apa yang dikembalikan oleh getMonths.