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

时间:2017-12-20 14:37:22

标签: javascript angular angular2-routing

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

任何帮助都将不胜感激。

1 个答案:

答案 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;
    });
}