J'ai un programme angular2 dans lequel je veux mettre à jour les données d'un composant lorsqu'un clic est fait sur un autre composant. J'ai fait un service dans lequel j'ai deux méthodes l'une pour mettre à jour les données et l'autre pour obtenir des données.Abonnement ne fonctionne pas angulaire2
mon service se présente comme suit
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataserviceService {
public subject = new Subject<any>();
sendMessage(message: any) {
debugger;
this.subject.next({ text: message });
}
clearMessage() {
this.subject.next();
}
getMessage(): Observable<any> {
return this.subject;
}
}
dans mon élément a
où clic est fait. J'ai cette fonction pour mettre à jour les données.
onClick()
{
this._dataserviceService.sendMessage(this.getJsonData());
}
et dans le composant b
je suis abonné cette façon. Si je fais l'abonnement dans le même composant, cela fonctionne très bien, mais dans d'autres composants, il ne met pas à jour les données. Toute aide serait appréciée. Selon ma compréhension, le problème principal est que mon composant d'abonné se charge après l'initialisation du service.
J'ai déjà essayé cela. La classe sujet est également classe enfant de classe observable et peu importe si je l'analyse ou non. – Usama
J'ai exactement le même code (noms de variables différentes mais) dans l'application angulaire sur laquelle je travaille actuellement et ça semble fonctionner comme prévu ... excuses si vous l'avez déjà fait, mais avez-vous vérifié que votre service est correctement configuré dans votre fichier app.js (importé et ajouté au tableau des fournisseurs) et importé dans le composant b? –
En regardant en arrière votre dernière édition, je soupçonne que le problème n'est pas réellement dans l'échantillon que vous avez posté –