如何在角度变为可见时刷新组件

时间:2017-09-06 09:02:28

标签: javascript angular typescript

在我的Angular 4.3.0应用程序中,标题,左侧和右侧面板隐藏在登录页面中。 只有在登录成功后,它们才会可见。 问题是当组件变得可见时,数据不会被预先加载。 首次加载时会调用ngOnInit方法,这会导致大量错误,因为数据在登录前未正确加载

我如何解决这个问题,因为我想加载组件或在登录成功后刷新它们。

以下是App-Component.html

<loading-bar color="#FF0000" [height]="3" [animationTime]="0.3" [runInterval]="100" [progress]="0"></loading-bar>
<div class="app app-header-fixed" value="test">
    <app-header *ngIf="header"></app-header>

    <app-left-menu *ngIf="leftmenu"></app-left-menu>
    <div id="content" class="app-content plain_wraper" role="main">
        <router-outlet></router-outlet>
    </div>

    <app-right-menu *ngIf="rightmenu"></app-right-menu>

</div>

例如,在ngOnInit方法内的app-header组件中,我们得到了用户的个人资料

this.userProfile = this.userServ.getUserProfile();

但这不会加载并产生错误。 那么,一旦组件可见,我怎样才能加载此配置文件数据?

一旦组件可见,我应该订阅visiblity params并加载配置文件吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我不会将ngOnInit称为方法。它是一个生命周期钩子,你可以在其中调用方法。

但是从我看到的情况来看,你可能需要在ngAfterViewInit钩子中初始化数据。所以:

ngAfterViewInit(){
 this.userProfile = this.userServ.getUserProfile();
}