如何在valueChanges订阅中填充数组后如何读取valueChanges外部的数组的值

时间:2018-08-27 11:54:04

标签: javascript typescript angularfire2 angularfire angularfire5

已经三天了,我仍在寻找解决方案。

基本上我有一个类属性变量dataMapped,它将当然是一个数组

我在getAllPersonnel()函数中填充了它

getAllPersonnel(){
    this.personnelService.getAllPersonnel().valueChanges().subscribe(
      data => {
        this.dataMapped = data ;
      })
  }

现在我想在this.dataMapped函数之外使用数组变量getAllPersonnel()

我尝试过这个:

ngOnInit() {
    this.getAllPersonnel();
    console.log(this.dataMapped); <== returns null
  }

但是我明白了 Undefined

所有这些操作的目的是我想填充有角度的材料mat-table,并且需要在构造函数而不是getAllPersonnel()函数内部初始化数据源。

所以代替这个:

getAllPersonnel(){
    this.personnelService.getAllPersonnel().valueChanges().subscribe(
      data => {
        data.forEach(personnel => {
          let personnelData :PersonnelData ; 
          personnelData = {
            image:personnel.image , 
            nom: personnel.nom,
            prenom: personnel.prenom,
            secteur: personnel.secteur,
            note: personnel.note,
            promotion: personnel.promotion
          }
          this.personnelDataArray.push(personnelData)
        })
        this.dataSource = new  MatTableDataSource<PersonnelData>(this.personnelDataArray);  <== i dont want the initialisation here
      }
    )
  }

我希望函数直接重新运行一个填充有订阅数据的数组,这样我就可以在我的构造函数中使用它,如下所示:

constructor(private personnelService : PersonnelService) { 
    this.getAllPersonnel();
    this.dataSource = new  MatTableDataSource<PersonnelData>(this.getAllPersonnel());
  } 

我要感谢任何帮助的人。

0 个答案:

没有答案