J'ai deux composants Dans les détails Détails Composant P> Détails code> et
Détails-View CODE>.
Détails CODE> Je dois passer observer par
@ Entrée () code> dans le composant secondaire. P>
@Input()
resouces$: Observable<DetailsResponse[]>
3 Réponses :
Vous pouvez modifier le DétailsViewComponent code> comme le code suivant
export class DetailsViewComponent implements OnInit, OnChanges {
@Input() resouces$: (id: number, type: string) => Observable<DetailsResponse[]>;
constructor(
) {}
ngOnInit() {
}
ngOnChanges(data) {
if (data.resouces$ && this.resouces$) {
this.resouces$(this.id, this.type).subscibe(res => {});
}
}
}
Arguments pour getdata () code> est connu dans le deuxième composant afin qu'il ne fonctionne pas
Est id code> et
type code> défini lorsque les DétailsViewComponent ont été créés?
Oui ,
Outre la typographie au service.getdata () code>, il est également important de savoir quand les propriétés d'entrée sont disponibles pour être liées. Les entrées ne sont pas définies dans le constructeur, elles sont disponibles dans le crochet code> Ngonchanges code> à chaque fois qu'une entrée change. ou dans
ngoninit code> si vous voulez lier juste la première fois qu'il est reçu. p>
La dactylographie ne correspond pas. En fonction de vos commentaires, vous devez passer une fonction car les arguments ne sont pas disponibles dans le composant parent. Donc, vous devez accepter une fonction comme composant enfant p> res $ code> est une fonction
(ID: numéro, type: chaîne) => Observable
resouve $ code> est un observable
Observable
@input code>, puis l'exécuter dans le composant enfant. P>
En supposant que ce n'est pas une faute de frappe:
this.res $ = Service.getData code> ne fait que passer la définition de la fonction. Si vous voulez réellement un observable, vous devez exécuter la fonction
this.res $ = service.getdata () code>. Sinon, si vous voulez passer la définition de la fonction, votre typage de
ressource $ code> est incorrect, et il doit être
(ID: numéro, type: String) => Observable code> correspondant à
res $ code> à partir du composant parent
Comme Vlad a dit que vous passez une fonction au lieu d'observable. Dans votre cas, vous devez appeler cette fonction de ressources $ () pour obtenir l'observable de l'extérieur. ressources $ (). S'abonner.