2017-07-27 60 views
0

我在使用typescript/components的Angular 4中進行異步HTTP調用時遇到問題...我創建了一個對象數組,並且在HTML中,我在對象旁邊有複選框。現在我想通過角度執行一個函數來檢查某些對象。但是當我做當完全加載html時Angular 4執行函數

(document.getElementById(id) as HTMLInputElement).checked = true; 

在我的component.ts。 但是,當我在執行按鈕時執行的函數中執行相同的代碼時,它找不到該元素。所以問題是,當我執行該函數時,HTML沒有被完全加載。我如何確保HTML完全加載?

+1

你不應該試圖操縱DOM的角度的方式。而應將所需狀態設置爲組件上的屬性,並根據需要使用單向或雙向綁定來設置HTML模板中的checked屬性。 – Duncan

+0

好吧,但如果我做所有元素都被檢查但不是所有的標記都是真的 – fangio

+0

那就是爲什麼你應該使用['ngModel'](https://angular.io/api/forms/NgModel)而不是綁定到'checked'屬性。你應該閱讀[形式指南](https://angular.io/guide/forms)... – n00dl3

回答

0

是的你不應該操縱DOM。

  • 使用散列標記HTML中的HTML元素。

    <input ... #inputname />

  • 檢索在TS控制器組件。

    @ViewChild('inputname') theinput;

  • 視圖初始化後,檢查。 ngAfterViewInit若檢驗

    ngAfterViewInit() { ... (this.form as HTMLInputElement).checked ... }