如何创建和更新可观察对象,这取决于@Input

时间:2019-05-08 12:58:44

标签: angular rxjs observable reactive-programming

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

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

  private result$: Observable<any>;

  constructor(private service: MyService) { }
}

MyService类提供了一种方法,该方法消耗criteria并返回应用于设置/更新result$的Observable。

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

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

  • 在稍后修改输入(即criteria)时,也应使用新值来更新可观察值(即result$)。

1 个答案:

答案 0 :(得分:1)

使用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);
  }
}