Bonjour,
Voici mon exemple simplifié :
Ci-dessous, la classe que je stocke dans firebase par des push :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
export class Message {
  author: string; content: string; 
 
concat(): string { 
  return this.author + ' :' + this.content; 
}
Ici la Data Service, qui se connecte à Firebase :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
export class MessageService { 
  lstMessages: FirebaseListObservable<Message[]>; 
  constructor(private af: AngularFire) { 
        this.lstMessages = af.database.list('/messages'); 
  } 
 
getLastest(): Observable<Message[]> { 
  return this.lstMessages; } 
 
send(msg: Message) { 
  this.lstMessages.push(msg); } }
Et finalement le app.component :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
export class AppComponent { 
   messages: Message[] = []; 
   constructor(private msgService: MessageService) { 
        this.msgService.getLastest().subscribe( 
            (data: Message[]) => { this.messages = data; console.log(this.messages[0].concat()); } 
        ); 
    }
Au final ça fonctionne dans la mesure où je récupère bien un Object[] avec mes champs, mais ce n'est pas vraiment des Message (class). Ainsi, si j'appelle depuis le résultat la méthod concat (), j'obtiends une erreur :

FIREBASE WARNING: Exception was thrown by user callback. TypeError: _this.messages[0].concat is not a function
at SafeSubscriber._next
Bien sûr, ça fonctionne si je récrée l'objet :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
this.msgService.getLastest().subscribe( 
    (data: Message[]) => { data.forEach( 
             (items) => this.messages.push(new Message(items.author, items.content)
             )
    );}
)
Mais ça n'a plus aucun intérêt...

Savez-vous comment récupérer ou traiter le data pour qu'il corresponde bien à ma classe .?

D'avance merci,

Mand.Net