2016-11-21 70 views
1

我是Angular 2中的新成員,嘗試開發具有基本CRUD功能的項目。 我面臨一個問題,我有一個User組件,並嘗試訪問它的ngAfterViewInit鉤子中的屬性,但它顯示undefined訪問組件屬性中的角2問題

這裏是User的代碼組件。

export class UserComponent implements OnInit, AfterViewInit 
{ 

private users: User[]; 
private userRoles; 

ngOnInit(){ 
      //get users from service 
      this.getUserDetails(); 
     } 
ngAfterViewInit() { 
       console.log(this); 
       console.log(this.users); 
     } 
getUserDetails() {  
      this._userService.getUsers().subscribe(users => this.users = users);    
     }  
} 

下面是控制檯的屏幕截圖。我可以看到該對象具有屬性users,但它在控制檯中顯示undefinedObject out put console

如果我遺漏了任何東西,請給出建議。 在此先感謝。

回答

0

檢查getUserDetails中的用戶屬性。您可以在模板中使用users屬性。檢查component lifecycle hooks可以更好地瞭解組件生命週期。

getUserDetails() {  
    this._userService.getUsers().subscribe((users) => { 
    this.users = users; 
    console.log(this.users); 
    }); 
} 
+0

它的顯示數據'getUserDetails()',但仍'undefined'在'ngAfterViewInit() ' – Karan

+0

你需要在'ngAfterViewInit'裏面檢查'users'的用例是什麼? – ranakrunal9

+0

我想在鉤子'initTable($ tableUsers,columnsUsers,this.users,$ removeUser,$ toolbarUsers)中初始化引導數據表;'' – Karan

0

我覺得這是沒有棱角2問題... 這是訪問例如全球打字稿問題。

當分配JavaScript對象被克隆到其他對象,然後對其中一個進行更改自動傳遞到其他

所以這個問題也我們可以通過讓與聲明變量打字稿... 做到這一點當我們想訪問打字稿對象內部jQuery的功能

let _this = this; 
something.each(function() { 
    console.log(_this); // the lexically scoped value 
    console.log(this); // the library passed value 
});