设置并从服务角度5获取数据

问题描述 投票:0回答:1

我正在使用角度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值是一个空对象

任何帮助,将不胜感激。

javascript angular angular2-routing
1个回答
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;
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.