Bonjour,
Voici mon exemple simplifié :
Ci-dessous, la classe que je stocke dans firebase par des push :
Ici la Data Service, qui se connecte à Firebase :
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; }
Et finalement le app.component :
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); } }
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 :
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()); } ); }
Bien sûr, ça fonctionne si je récrée l'objet :FIREBASE WARNING: Exception was thrown by user callback. TypeError: _this.messages[0].concat is not a function
at SafeSubscriber._next
Mais ça n'a plus aucun intérêt...
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) ) );} )
Savez-vous comment récupérer ou traiter le data pour qu'il corresponde bien à ma classe .?
D'avance merci,
Mand.Net
Partager