2016-01-03 66 views
0

我想每次運行本地變量時都運行ngAfterViewInit()。我想過使用* ngIf觸發這個功能,但是我不知道如何從組件本身進行設置。 HostBinding不用說,不起作用。是否可以在主機元素上設置* ngIf?

這裏被簡化的什麼,我想實現普拉克:http://plnkr.co/edit/tflsWzsRDVNeMPjmTokF?p=preview

編輯:我以前的解釋是有點誤導。 *ngIf是必不可少的,因爲如果其局部變量是false,我不想顯示組件。但是,如果它是true,我想要傳遞此組件內的div的寬度和高度以便服務。

+0

爲什麼每次局部變量改變時都要運行'ngAfterViewInit()'。似乎有點毫無意義。 –

+0

@GünterZöchbauer重點在於將盒子的寬度和高度屬性傳遞給服務,並且在創建視圖後我可以在onlly上完成。 – Eggy

+0

調用'ngAfterViewInit()'不能確保視圖實際上已經被創建。只有** Angular **調用'ngAfterViewInit()'之後,才能確保視圖已初始化。 –

回答

0

你可以改變變量到一個getter/setter,並在每次調用setter時調用ngAfterViewInit()或任何其他方法(並且新值與舊值不同)?

private _show: boolean = false; 

    get show():Boolean { 
    return this._show; 
    } 
    set show(newVal:Boolean) { 
    if(newVal != this._show) { 
     this._show = newVal; 
     ngAfterViewInit();; 
    } 
    } 

    ngAfterViewInit() { 
相關問題