如何用角做两项服务

时间:2019-03-15 16:52:17

标签: arrays angular

我有一个数组,我需要显示该数组中的几个随机项。 现在的代码看起来像这样,但是我认为应该简单地应该有两种不同的服务,一种是另一种。 我的组件看起来像这样:

  items: Item[];
  randomItems: Item[];

  ngOnInit() {
    this.someService.getItems().subscribe((items) => {
      this.items = items;
    });
    this.randomIndex(this.items);
  }

  randomItems(items: Item[]) {
    return this.randomItems = _.sample(items, _.random(9));
  }
}

interface Items {
  id: number,
  title: string,
  body: string
}

我的html看起来像这样:

 <ul *ngFor="let item of items">
     <li>{{ item.id }}</li>
 </ul>

如何通过此代码提供两种不同的服务?

1 个答案:

答案 0 :(得分:0)

首先将对randomIndex的调用移到订阅回调中。

ngOnInit() {
  this.someService.getItems().subscribe((items) => {
    this.items = items;
    this.randomIndex(this.items);
  });
}

关于您的问题:

  

如何通过此代码提供两种不同的服务?

您不需要基于显示的代码。如果执行此操作,则主观决定其重构方式。您的主要缺陷是您没有等待服务来响应结果,因此很容易解决。