我正在嘗試練習 Typescript,但遇到了一個似乎是 Angular 問題,或者我至少得到了相互矛盾的反饋
在我的 Angular 視圖中,我試圖在一個類中回圈一個靜態的戰士陣列Roster。這是類定義:
export class Roster {
static Fighters: Array<Fighter> = [
...
]
}
在我看來,我正在嘗試使用以下方法遍歷預定義Fighter的 s:
<ng-container *ngFor="let fighter of Roster.Fighters; let i = index">
但是我在這里收到錯誤訊息:
“名冊”型別上不存在屬性“戰斗機”。您的意思是訪問靜態成員“Roster.Fighters”嗎?ngtsc(2576)
Roster這很令人困惑,因為已經訪問了班級本身的戰士陣列,這是我班級的另一個成員
export class Roster {
static fighterLookup(fighterId: number): Fighter {
console.log(Roster.Fighters[fighterId]);
}
...
}
在我的組件中,我只是為類定義分配了一個 Roster 變數:
export class AppComponent {
Roster: Roster = Roster;
}
所以我可以Roster.Fighters在打字稿檔案中訪問戰斗機串列,但我不能在 ngFor 回圈中這樣做?我錯過了什么?我是否需要在我的組件中以其他方式定義它才能訪問靜態陣列?
uj5u.com熱心網友回復:
這種行為的主要原因是因為在打字稿類中,您始終可以通過類的名稱訪問靜態方法(Roster在您的情況下),它是 javascript 語言的一部分
在角度模板中,您無法訪問類本身,只能訪問此類的實體(就像new Roster一直一樣)
在這種情況下,您可以在類中添加一些 getter:
export class Roster {
static Fighters: Array<Fighter> = [
...
]
get FightersView() {
return Roster.Fighters;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/436036.html
標籤:javascript 有角度的 打字稿
上一篇:如何在html中使用異步
