Как бы вы передали наблюдаемое с параметрами как @Input? - PullRequest
0 голосов
/ 23 января 2020

Цель состоит в том, чтобы передать http-запрос от компонента 1 к компоненту 2 и установить его параметры для компонента 2.

Это мой псевдокод подхода:

Компонент 1 HTML

<app-component-2 [obs]="obs"></app-component-1>  

Компонент 1 TS

export class Component1 {

   obs : Observable<any>;      

   constructor(private service : SomeService){
     this.obs = this.service.method(param1 ,param2 ,param3);  //Passing param1, param2 and param3 as Inputs on Component2 is not an option 
  }
} 

Компонент 2 TS

export class Component2{
  Input() obs : Observable<any>;
}  

Obs: Передача param1, param2 и param3 в качестве Inputs - не вариант

Надеюсь, я хорошо объяснил мой вопрос. Заранее спасибо.

1 Ответ

1 голос
/ 23 января 2020

Если вы хотите передать наблюдаемое, вы можете сделать это как обычный объект:

Компонент 1:

export class Component1 {

 obs : Observable<any>;      

 constructor(private service : SomeService){
  this.obs = this.service.method(param1 ,param2 ,param3);
 }
} 

Компонент 2:

export class Component2 implements OnInit {

@Input() obsFromParent: Observable<any>;

ngOnInit() {
  this.obsFromParent.subscribe((data) => {// do what you want });
 }
}

Если наблюдаемое, которое вы передаете, является конечной наблюдаемой, подумайте, чтобы отписаться от нее, на ngOnDestroy от Component2.

...