Обновить источник данных о материалах - PullRequest
0 голосов
/ 27 мая 2020

В моем ClassedataSource изначально у меня есть userId, у меня есть функция «MappingIdNameIntervenant», которая заменяет идентификаторы пользователя их lastNames + first Names. Источник данных сначала получает правильные значения, но когда я вызываю MappingIdNameIntervenant, данные не обновите правильно.

Вот мой код:

liste-classes.component.ts

ngOnInit() 

  {
    this.classeService.getAllClasses().subscribe(
      (Allclasses:Classe[]) => {
        this.ClassedataSource=Allclasses;


    this.classeService.MappingIdNameIntervenant(this.ClassedataSource).subscribe(
          (mini:Classe[]) => {
            **this.ClassedataSource=mini;**
            console.log("this.ClassedataSource=",this.ClassedataSource); //doesn't display in console**

          });
        });
  }

classe.service.ts

MappingIdNameIntervenant(cl:Classe[]):Observable<Classe[]>
{
  let result = new Subject<Classe[]>();
  for (let i=0;i<cl.length;i++)
  {
    for (let j=0;j<cl[i].intervenants.length;j++)
     {
        let usmap=new UtilisateursService();
          usmap.getDisplayNameOfId(cl[i].intervenants[j]).subscribe((nameid) => {
          cl[i].intervenants[j]=nameid;

        });
     }
     console.log("cl in MappingIdNameIntervenant = ",cl); ///// i get data in console, but doesn't display in the interface
     result.next(cl);
  }
  return result.asObservable();
}

Utilisateur.service.ts

getDisplayNameOfId(id:string):Observable<string>{
  let gdnid = new Subject<string>();

  firebase.database().ref("/users").orderByKey().once("value")
  .then((snapshot) => {
    let dni:string;
    snapshot.forEach((childSnapshot) => {
      if (childSnapshot.val().UserId === id){
        dni=childSnapshot.val().firstName + " " +childSnapshot.val().lastName;
      }
    });
    gdnid.next(dni);
  });


  return gdnid.asObservable();
}
...