我有以下代碼之前呈現組件網頁摘要angular2的OnInit
import { Component, OnInit } from "@angular/core";
import { AuthenticationService } from "../shared/services/authentication.service";
import { User } from "./user";
import { UserService } from "./user.service";
@Component({
templateUrl:'./user.component.html'
})
export class UserComponent implements OnInit{
user: User;
constructor(
private _userService: UserService,
private _authService:AuthenticationService){
}
ngOnInit(){
let user = this._userService.getUser();
if(!user){
this._authService.getLoggedUser().subscribe(
user => {
this.user = user;
this._userService.setLoggedUser(user);
}
);
this._userService._loggedUser$.subscribe(
user => {
this.user = user;
}
)
}else{
this.user = user;
}
}
}
這與else
block.But工作正常與第一路線初始化(/用戶/配置文件)當用戶刷新瀏覽器窗口我提出的要求再次到服務器並得到用戶的背部和渲染我的HTML組件(if(!user)
塊)。這裏是HTML視圖
<form>
<fieldset>
<legend>Profile</legend>
<div class="form-group">
<label>Name</label>
<input name="name" type="text" class="form-control" [(ngModel)]="user.name">
</div>
<div class="form-group">
<label>Mobile</label>
<input name="mobile" type="text" class="form-control" [(ngModel)]="user.mobileNumber">
</div>
<div class="form-group">
<label>Password</label>
<input name="password" type="password" class="form-control">
</div>
<div class="form-group">
<label>Email</label>
<input name="email" type="text" class="form-control" [(ngModel)]="user.email" disabled>
</div>
</fieldset>
</form>
和我有AppComponent,它會做同樣的內onInit
(如果不存在,則通過http調用獲取用戶)。問題是,當我在完成userComponent的init方法之前首先呈現我的UserComponent頁面刷新時,它將導航到AppComponent init方法,之後user.component.html
會在沒有用戶數據的情況下崩潰Cannot read property 'name' of undefined
。並且它會重定向到UserComponent的onInit,但是此時用戶html已經渲染並顯示。
我該如何解決這種情況,並且有沒有最好的方法來處理這種情況?
在此先感謝..
感謝Amit.it工程..再次感謝你提供的鏈接。 – bews99