как создать и обновить наблюдаемую, которая зависит от @Input - PullRequest
0 голосов
/ 08 мая 2019

Простой компонент имеет вход (т. Е. criteria) и наблюдаемый (т. Е. result$).

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

  private result$: Observable<any>;

  constructor(private service: MyService) { }
}

Класс MyService предоставляет метод, который использует criteria и возвращает наблюдаемое, которое следует использовать для установки / обновления result$.

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

Каков современный способ создания наблюдаемого с помощью этого сервиса. Наиболее важные требования:

  • также, когда вход (т. Е. criteria) изменяется позже, новое значение должно использоваться для обновления наблюдаемой (т. Е. result$).

1 Ответ

1 голос
/ 08 мая 2019

С 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);
  }
}
...