Прошло три дня, и я все еще ищу решение этой проблемы.
В основном, у меня есть переменная атрибута класса 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());
}
Я был бы признателен за любую помощь, ребята, спасибо.