首页 > 解决方案 > 如何创建和更新可观察对象,这取决于 @Input

问题描述

一个简单的组件有一个输入(即criteria)和一个可观察的(即result$)。

class Foo {
  @Input()
  private criteria: string;

  private result$: Observable<any>;

  constructor(private service: MyService) { }
}

MyService 类提供了一个方法,该方法使用criteria并返回用于 set/update 的 observable result$

service.fetchResult(criteria: string): Observable<any>

使用此服务创建可观察对象的最先进方法是什么。最重要的要求是:

标签: angularrxjsobservablereactive-programming

解决方案


set

_criteria: Criteria; // set local variable if this input needed elswhere
@Input()
set criteria(c: Criteria) {
  this.service.someMethod(c);
  this._criteria = c;
}

OnChanges

ngOnChanges(changes: SimpleChanges) {
  let criteria = changes.criteria;
  if(criteria && criteria.currentValue !== criteria.previousValue){
    this.service.someMethod(criteria);
  }
}

推荐阅读