iT邦幫忙

1

Angular 變數問題 (沒有初始設定式,且未在建構函式中明確指派)

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20210618/20137886n4GhefJ1d3.png

https://ithelp.ithome.com.tw/upload/images/20210618/20137886qUIe675x7Z.png

打法都是照著別人教學的步驟做的 可是不知道為甚麼會報錯

hughc iT邦新手 4 級 ‧ 2021-09-02 13:15:02 檢舉
Angular新的版本會做變數的檢查,如果這個變數不想在一開始就給值,那它就是optional的在變數加個?表示它是optinal應該可以解決。
像這樣:
paginator?:MatPaginator
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
rskerz
iT邦新手 5 級 ‧ 2021-10-15 08:54:16

一個component在開始跑生命週期之前都會先跑建構式
你在ngOnInit()的時候使用loginForm這個變數,但她還沒有被賦予初始值,所以編譯器才會報錯
所以一般的變數賦予值我會這樣寫

export class TestComponent implements OnInit {
    loginForm: FormGroup;
    
    constructor() {
        this.loginForm = new FormGroup({你的建構Form程式碼});
    }
}

至於另外一個ViewChild的變數,這個就比較不一樣
他利用#tag去取得你html建立的元件

@ViewChild('addrTable') dataTable!: Table;

正常來說,這種從html取得的元件都是一定要存在的,所以我宣告的時候都會加驚嘆號,告訴編譯器說不需要擔心這個變數會是null或undefined,但若是你宣告型態的時候給他?或是宣告他有可能會是undefined

@ViewChild('addrTable') dataTable?: Table;

@ViewChild('addrTable') dataTable: Table | undefined;

當你後續要使用該元件的方法時編譯器就會報錯
https://ithelp.ithome.com.tw/upload/images/20211015/20143083WVWjKYvxtW.png

當然我的解法不一定是最好的,我也是剛接觸Angular不久的新手,如果以上有任何論述錯誤,再麻煩大家多多指教!!

我要發表回答

立即登入回答