如何通过角度服务将数据从表单(输入)传递到另一个组件

时间:2019-07-02 15:19:06

标签: angular service components

我有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到comp3时就可以了。 但是,从comp3到comp1的调用是未定义的。因此ima无法看到第一个comp的输入结果。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用BehaviourSubject?这样,您可以设置一个初始值

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

答案 1 :(得分:0)

根据您的代码,订阅者组件(comp3)应该在您从comp1发布时准备就绪。如果您现在不订阅,则发射的值会丢失。

使用BehaviorSubject()代替,该行为始终向其订阅者发出最后发布的值。在您的代码中只需更改-

public passRepartiSource = new BehaviorSubject<any>(**initialValue**);