我正在使用角5 我的场景来自一个组件即时设置服务中的数据,另一个组件我正在获取该数据|
组件-1:
makeUser(row){
this.agentsService.setSelectedAgentData(row); // setting the data (row) in agentsService.
const mrf = this.modalService.open(MakeUserComponent);
}
服务: 在课堂上宣布变数。
public selectedData:any = {};
setter和getter方法如下
setSelectedAgentData(selectedTableRowData){
this.selectedData = selectedTableRowData;
}
getSelectedAgentData(){
return this.selectedData;
}
组件 - 2:
ngOnInit() {
this.userDetails = this.agentsService.getSelectedAgentData();
this.roles = this.agentsService.getRolesList();
}
当我从组件-2调用方法this.agentsService.getSelectedAgentData()时,selectedData值是一个空对象
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以使用Subject(rxjs库)来实现此目的。因此,Subject一方面可以生成数据。另一方面,您可以订阅任何地方的更改。 您的服务将如下所示:
@Injectable()
export class YourService {
public selectedData: Subject<any>;
constructor() {
this.selectedData = new Subject();
}
generateSelectedAgentData(row: string) {
this.selectedData.next(row);
}
}
在你的第一个组件中:
makeUser(row){
this.agentsService.generateSelectedAgentData(row);
const mrf = this.modalService.open(MakeUserComponent);
}
在你的第二个组件中:
constructor(private ys: YourService){
this.ys.selectedData.subscribe(
data => {
console.log(data);
this.userDetails = data;
});
}