2017-02-20 64 views
0

我是新的angular2,所以如果您發現它基本問題,請忽略它。如何在angular2中操縱可觀察類型的數據

Observable

users: Observable<User[]>; 

類型的變量,並在構造函數中,我加油吧

constructor(private roleService: RoleService, private userService: UserService) { 
     this.users = this.userService.getAllUsers(); 
} 

現在我想操縱/迭代的this.users數據。我怎樣才能做到這一點?

+0

https://blog.thoughtram.io/angular/2016/01/06/taking-advantage -of-observables-in-angular2.html –

+0

您可以添加方法getAllUsers()的代碼。無論如何,請看看Observable是如何管理的,可能從angular.io上的http客戶端文檔開始 – Picci

回答

1

您可以使用map或任何其他可用操作符的長列表。

您需要訂閱才能執行observable,否則它不會執行任何操作。您還可以使用.forEach(...).toArray(),(和其他人),而不是subscribe()

constructor(private roleService: RoleService, private userService: UserService) { 
     this.users = this.userService.getAllUsers() 
     .map(val => val + 'xxx') 
     .subscribe(val => console.log(val)); 
} 

又見https://blog.thoughtram.io/angular/2016/01/06/taking-advantage-of-observables-in-angular2.html

+1

通常最好是隱式地在模板中預訂'async'管道,這樣可以避免記住訂閱並且退訂。順便說一句,在'ngOnInit'中做這種事情通常比在構造函數中更好。 – 2017-02-20 07:30:29

+0

我有decalred私人用戶:[{value:0,label:'sd'}];和使用訂閱this.userService.getAllUsers() .subscribe(數據=> { data.forEach(元素=> { this.users.push({值:element.id,標籤:element.firstName}); }); })但它在控制檯顯示錯誤「無法讀取屬性」推「未定義」 –

+0

這是一個問題?還不清楚嗎? –

相關問題