Angular 5:如何处理异步和订阅的订阅

时间:2017-12-11 16:11:56

标签: angular observable angular-observable

我有一种情况,我得到一些项目的列表,我在模板中使用async。但是,无论出于何种原因,我需要获得组件中的第一个项目 - 我需要使用第一个元素进行大量工作,因此我不能只获取模板中的第一个项目。所以,我也订阅了相同的observable。这是“允许的”吗?我这样做是否有任何内存泄漏?这是我的意思的基本示例(实例http://plnkr.co/edit/tulvIgxBjpOoUZ4Gk3hI?p=preview):

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>First item: {{first?.first_name}}</h2>
      <ul>
        <li *ngFor="let item of items$ | async">
          {{ item.first_name }}
        </li>
      </ul>
    </div>
  `,
})
export class App implements OnInit, OnDestroy {
  items$: Observable<any>;
  _subscribe: Subscription;
  first: any;

  constructor(private api: RestAPI) {
  }

  ngOnInit() {
    this.items$ = this.api.getItems();
    this._subscribe = this.items$.subscribe((items) => {
      this.first = items[0];
    });
  }

  ngOnDestroy() {
    this._subscribe.unsubscribe();
  }
}

更新:直播示例http://plnkr.co/edit/tulvIgxBjpOoUZ4Gk3hI?p=preview

0 个答案:

没有答案