0

我想向这个组件添加一个加载微调器,并且我正在尝试将代码拆分为一个服务,因此我可以添加一个.subscribe方法并在加载完成时停止微调器,就像在这个工作示例中一样:

工作示例组件

    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 给出答案

试一试答案,以更好地理解问题。

所以我创建了 UserService,它将使用 angularfire2 显示用户,现在我认为女巫开始成为主要问题,我的意思是items: FirebaseListObservable<any>;

用户服务

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.
除了 有没有其他方法可以做到这一点.subscribe()?或者我可以将类型items转换为其他类型吗?

4

1 回答 1

0

只需将其定义为any

items: any;    

在初始化块中

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

在您的 html 中,您不能使用异步管道...

<pre>{{ items | json }}</pre>
于 2016-07-03T18:00:50.630 回答