Dans mon composant enfant, j'ai une liste de EnfantComponent: P> Timezones Code> avoir un modèle sélectionnéTezone (modèle) code>. J'ai besoin de diffuser le sélectionnée de sélectionnerzone code> de la liste des abonnés. export class TimeZoneComponent implements OnInit {
public timezones: ITimeZone[] = [];
public SelectedTimeZone: ITimeZone;
public SelectedTimeZone$ = new Observable<ITimeZone>();
constructor(private timezoneService: TimeZoneService) {
//i'm not sure what to do next since i already declare an Observable<ITimezone>();
}
}
3 Réponses :
Vous devez créer un service dans lequel vous allez déclarer votre une fois que votre fuseau horaire est modifié de ce composant, vous devez déclencher l'événement comme p> où vous souhaitez que la valeur TimeZone mise à jour, vous devez vous abonner à cet événement comme p> comportemortosubject code> comme
Ce n'est pas une meilleure approche pour l'enfant à la communication des parents comme angulaire déjà fourni @output code> décorateur à cette fin
@Mustahsan: Voir ce que OP a demandé il veut "diffuser ma modification à la liste des abonnés" "
Oui à l'aide de @OutPut, il peut émettre tout événement et parent sera averti à ce sujet dans sa méthode
@ Mustahsan Et si j'ai le fuseau horaire dans mon composant d'en-tête et que mon composant parent ne sait rien à l'en-tête parce que c'est une route distincte
Les composants des parents doivent savoir sur les enfants, ce que vous avez dit est suggéré dans des cas où il n'y a pas de relation parent-enfant
@Mustahsan: Oui définitivement, il n'y a pas de relation parent-enfant ici, car tout fuseau horaire d'application sera sélectionné une fois et il sera appliqué à tout le composant.
Il existe de nombreuses façons de faire du transfert de données entre deux composants. Comme vous l'avez demandé pour que les modifications soient détectées par une liste d'abonnés, https://stackoverflow.com/a/58092434/6835898 < / a> est la réponse parfaite. Les autres moyens de transfert de données sont basés sur la relation entre deux composantes, comme dans l'enfant parent, des parents enfants, des frères et sœurs. Pour des projets plus petits, les observables sonnent comme une bonne idée, mais comme les projets vont plus gros, vous devrez faire un dictionnaire pour tous les différents observables que vous utiliserez dans tout le projet. Ainsi, les événements événementiels et les intrants sont les meilleurs à utiliser pour les transferts de données dans de grands projets. P>
Utilisez un émetteur d'événement chez l'enfant et obtenez la sortie à l'intérieur du parent composant (s). p>
enfantComponent.ts strong> p>
sur le changement de fuseau horaire changeant, déclencher une fonction pour émettre une sortie. p>
xxx pré>
parentcomponent .html strong> p> Liez la sortie d'événement enfant à une fonction de composant parent. p>
xxx pré> parentcomponent.ts strong> p>
fonction à déclencher sur la détection de sortie d'événement. p>
xxx pré> blockquote>
RTFD
Vous recherchez
@outPut code> décorateur