在我的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并加载配置文件吗?
谢谢!
答案 0 :(得分:2)
我不会将ngOnInit
称为方法。它是一个生命周期钩子,你可以在其中调用方法。
但是从我看到的情况来看,你可能需要在ngAfterViewInit
钩子中初始化数据。所以:
ngAfterViewInit(){
this.userProfile = this.userServ.getUserProfile();
}