J'ai un composant parent avec le code suivant dans le parent.component.html:
getSpecs()
Dans le composant enfant, j'ai le paramètre d'entrée comme celui-ci:
@Input() idElement : number;
Et aussi une fonction appelée
<app-child [idElement]=(idElement)></app-child>
Je veux que la fonction getSpecs ()
soit exécutée par l'enfant quand l'entrée est modifiée par le parent. Est-ce possible?
3 Réponses :
Pour cela, vous devez utiliser le hook de cycle de vie angulaire ngOnChanges
.
Dans votre cas, ce serait quelque chose comme:
ngOnChanges(changes: SimpleChanges) { if (changes['idElement']) { // Do your logic here this.getSpecs() } }
La documentation est ici .
Vous pouvez essayer ceux-ci
Importez OnChanges
depuis le package angular core dans votre composant enfant
import {Component, Input, OnChanges, SimpleChanges} depuis '@ angular / core';
Implémentez votre classe enfant comme
classe d'exportation YourComponent implémente OnChanges
Créez une méthode OnChanges
comme
ngOnChanges(changes:SimpleChanges){ console.log(changes.your input property name); // implement your logic here }
Chaque fois que vous avez des modifications dans le composant parent, cela affectera le composant enfant
Il existe une autre option sans OnChanges
.
@Component({ selector: 'app-child', template: '<div></div>' }) export class AppChildComponent { private _idElement: number; get idElement(): number { return this._idElement; } @Input('idElement') set idElement(value: number) { if (value) { this._idElement = value; this.getSpecs(); } } }
J'espère que cela vous aidera! :)
angularfirebase.com/lessons/…
Comme ceci: stackoverflow.com/q/38571812/4636715 ?