Как передать данные из формы (ввода) в другой компонент через сервис в угловых - PullRequest
0 голосов
/ 02 июля 2019

У меня есть 2 компонента, и я хотел бы получить входные данные одной формы и передать их как данные другому компоненту.

компонент 1:

this.dalreparto = this.form_search.get('dalreparto').value;
this.service.passDataRepart(this.dalreparto);

обслуживание:

public passRepartiSource = new Subject<any>();
passDataReparti$ = this.passRepartiSource.asObservable();

passDataRepart(listdatareparti: any) {
  this.passRepartiSource.next(listdatareparti);
 console.log('lista here di servici reparti final', listdatareparti);
}

компонент 2:

this.service.passDataReparti$
   .subscribe(
     result => {

        console.log('data 1 lista here', result);

      }
   );

Это должно быть сделано через сервис, так как эти компоненты не имеют никакого отношения.

Проблема в том, что когда я вызываю сервисную форму comp1 to comp3, все в порядке. Но при вызове из comp3 в comp1 данные не определены. Так что я не могу увидеть результат ввода с первого компа.

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Согласно вашему коду, компонент подписчика (comp3) должен быть готов к моменту публикации с comp1. Если вы не подписались в данный момент, то потерянное значение будет потеряно.

Вместо этого используйте BehaviorSubject (), который всегда отправляет подписчикам последнее опубликованное значение. В вашем коде просто поменяйте -

public passRepartiSource = new BehaviorSubject<any>(**initialValue**);
0 голосов
/ 02 июля 2019

Вы пытались использовать вместо этого BehaviourSubject? Таким образом, вы можете установить начальное значение

public passRepartiSource = new BehaviorSubject(/*value*/); 
...