【发布时间】:2016-08-11 07:32:34
【问题描述】:
我正在尝试构建一个登录页面,其中登录模板被替换为 app+router-outlet。
HTML:
<div class="contentWrapper" *ngIf="!logedin">
Login html....
</div>
<div *ngIf="logedin">
<div #header></div>
<div class="contentWrapper">
<div #nav></div>
<div class="main">
<router-outlet>
</router-outlet>
</div>
</div>
</div>
组件
export class AppComponent implements OnInit{
logedin = 0;
constructor(
private _dcl:DynamicComponentLoader,
private _elmRef:ElementRef,
private _httpRest:HttpRest //http calls service
){}
ngOnInit(){}
login(){
var vm = this;
//simulated XHR
setTimeout(()=>{
vm.postLoginSuccess()
})
}
postLoginSuccess(){
var vm = this;
vm.logedin = 1;
setTimeout(()=>{
vm.loadApp()
},0);
}
loadApp(){
this._dcl.loadIntoLocation(Header,this._elmRef,"header");
this._dcl.loadIntoLocation(Navigation,this._elmRef,"nav");
}
}
我正在尝试: 1) 显示登录模板 2)登录成功更新登录 3)相应地隐藏登录 4) 显示应用程序
这会导致错误消息:
Could not find variable header
我知道这是因为 #header 是 *ngIf 模板范围内的局部变量。我尝试以多种方式解决此技术(使用 *ngIf 和局部变量 # 交换模板而不是使用 loadIntoLocation)但均未成功。
问题是我的应用程序框架(意味着导航+标题)不是通过
我们将非常感谢您的帮助。
【问题讨论】:
-
注意:如果使用箭头函数,则不需要 var vm = this。
-
您能否确认使用 [hidden] 而不是 ngIf 可以解决您的问题?
-
我不明白你为什么要使用
DynamicComponentLoader。为什么不创建一个Header和一个Navigation组件并将它们绑定在模板中。 -
我同意 [hidden] 解决了问题!!!非常感谢 Michael D,我不知道 [hidden] html5 属性。
标签: javascript typescript angular angular2-routing angular2-template