Как прочитать значения массива вне valueChanges после заполнения его внутри подписки valueChanges angularfire - PullRequest
0 голосов
/ 27 августа 2018

Прошло три дня, и я все еще ищу решение этой проблемы.

В основном, у меня есть переменная атрибута класса dataMapped, которая будет массивом, конечно

я заполняю его внутри getAllPersonnel() функция

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

Теперь я хочу использовать переменную массива this.dataMapped вне функции getAllPersonnel().

Я попробовал это:

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

но я получаю Не определено

Цель всего этого заключается в том, что я хочу заполнить угловой материал 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());
  } 

Я был бы признателен за любую помощь, ребята, спасибо.

...