0

我有一种情况,我得到一些项目的列表并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

4

0 回答 0