我需要一些jQuery代碼在我的Angular組件視圖初始化以將數值轉換爲星號後運行。Angular2 ngAfterViewInit何時被調用?
我把代碼放在ngAfterViewInit函數中,但它沒有做我所需要的。我在函數中設置了一個斷點,並且我發現組件的大部分HTML都沒有在調用ngAfterViewInit函數的時候加載。未加載的部分使用* ngFor指令生成。
如何讓我的代碼在該指令生成所有需要操作的html後運行?
我需要一些jQuery代碼在我的Angular組件視圖初始化以將數值轉換爲星號後運行。Angular2 ngAfterViewInit何時被調用?
我把代碼放在ngAfterViewInit函數中,但它沒有做我所需要的。我在函數中設置了一個斷點,並且我發現組件的大部分HTML都沒有在調用ngAfterViewInit函數的時候加載。未加載的部分使用* ngFor指令生成。
如何讓我的代碼在該指令生成所有需要操作的html後運行?
什麼時候ngAfterViewInit被調用?
ngAfterViewInit()
應在組件的視圖及其子視圖被創建後調用。我對此進行了測試,發現兒童的ngAfterViewInit()
在父母的ngAfterViewInit()
之前被調用。
當你說「我的組件的大部分HTML甚至沒有加載」,你是什麼意思的「加載」? HTML組件的模板中是HTML還是通過其他方式加載(或生成)的?
如何讓我的代碼在該指令生成所有需要操作的html後運行?
這將有助於查看指令代碼。如果指令以某種方式生成未包含在Angular模板中的HTML,則可能需要手動觸發事件(例如,使用輸出屬性)以在呈現完成時通知父級。或者你可以使用setTimeout()
(但那不可靠)。
我需要一些jQuery代碼在我的Angular組件視圖初始化以將數值轉換爲星號後運行。
你從哪裏得到這些數值?如果它們是從服務器動態加載的,則可以在數據到達時觸發事件,並在該點更新視圖。
此外,爲什麼不編寫一個組件,它將一個數字作爲輸入屬性並使用NgFor
生成星星?
我一直在使用ngAfterViewChecked,當我依靠準備好的DOM。
import {Component, AfterViewChecked} from '@angular/core';
export class Spreadsheet implements AfterViewChecked{
ngAfterViewChecked(){
}
}
請看: http://stackoverflow.com/questions/15458609/execute-function-on-page-load – Belakorr
意見:'componentDidMount'是一個更簡單的抽象https://facebook.github.io /react/docs/component-specs.html只有在兒童被調用後纔會被調用。 NgFor不是一個概念,因爲你只是使用簡單的JavaScript [] .forEach' – basarat