2016-06-30 47 views
0

我想添加一個加載微調器到這個組件,並且我試圖將代碼分成一個服務,所以我可以添加一個.subscribe方法和當加載時停止微調器在此工作示例做,如:Angular2在用angularfire2加載數據後停止加載微調器

工作示例組件

ngOnInit(){ 
    this._userService.getUsers() 
     .subscribe(users => { 
      this.users = users; 
      this.loadingUsers = false; 

工作示例服務

getUsers(){ 
     return this._http.get(this._url) 
      .map(response => response.json()); 
    } 

這是我試圖拆組件:

import { AngularFire, FirebaseObjectObservable , FirebaseListObservable } from 'angularfire2'; 
    import {UserService} from './user.service'; 
    import {SpinnerComponent} from './spinner.component' 

    export class UsersComponent implements OnInit{ 
     items: FirebaseListObservable<any>; 
      constructor(af: AngularFire) { 
      this.items = af.database.list('/hr/users'); 
      //this.loadingLista = false; 
      } 

更新#1的答案

射門嘗試一個答案的鏡頭,以更好地理解問題的寧。

所以我創建將使用angularfire2顯示用戶UserService,巫婆現在我覺得是開始是主要的問題,我的意思是類型items: FirebaseListObservable<any>;

UserService

import { AngularFire } from 'angularfire2'; 
import {Injectable} from '@angular/core'; 

@Injectable() 
export class UserService{ 

    constructor(private _af: AngularFire){} 

    getUsers(){ 
     return this._af.database.list('hr/users'); 
    } 
} 

在UsersComponent我設法讓用戶像這樣的列表:

items: FirebaseListObservable<any>; 
    ngOnInit(){ 
    this.items = this._userService.getUsers(); 
    } 

但現在我需要一種方法來停止微調加載完成後,我知道的唯一途徑是與.subscribe()

items: FirebaseListObservable<any>; 
loadingLista = true; 

constructor(private _userService: UserService) { 
} 

    ngOnInit(){ 
     this._userService.getUsers(); 
     .subscribe(
     x => this.items = x, 
     this.loadingLista = false 
    ) 
    } 

,但是這並未」因爲items的tipe工作。
.subscribe()之外有沒有其他方法可以做到這一點?或者我可以將items的類型轉換成別的東西嗎?

+0

問題是什麼? – AngJobs

+0

我會在答案上添加一個鏡頭,所以我希望它更清晰。 –

+0

我猜這個場景中的最後一個問題是不允許使用'.subscribe()'方法停止微調的'items'類型。我更新了這個問題。 –

回答

0

只是在init塊

ngOnInit(){ 
      this._userService.getUsers() 
      .subscribe(
      (x) => {this.items = x; this.loadingLista = false }, 
      (e) = > { console.log(error) }, 
     ) 
     } 
在你的HTML你不能使用異步管

把它定義爲any

items: any;  

...

<pre>{{ items | json }}</pre> 
+0

'this.items'不可分配以鍵入FirebaseListObservable 。這是我不知道如何傳遞的主要問題。 –

+0

'items:FirebaseListObservable ; '<==不正確,請參閱上面的編輯 –

+0

我改變了所有的建議,並且在html中我有'* ngFor =「let item of async」',我改變了'* ngFor =「let item of items | json「',但現在我得到'EXCEPTION:找不到不同的支持對象'[.....' –