我有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的输入结果。
答案 0 :(得分:0)
您是否尝试过使用BehaviourSubject?这样,您可以设置一个初始值
public passRepartiSource = new BehaviorSubject(/*value*/);
答案 1 :(得分:0)
根据您的代码,订阅者组件(comp3)应该在您从comp1发布时准备就绪。如果您现在不订阅,则发射的值会丢失。
使用BehaviorSubject()代替,该行为始终向其订阅者发出最后发布的值。在您的代码中只需更改-
public passRepartiSource = new BehaviorSubject<any>(**initialValue**);