Comment puis-je mettre à jour un objet spécifique qui est transmis à l'enfant de parent. Dans mon modèle de parent, j'ai par exemple contenir 2 modèles enfants que je définis comme ça. La question est, comment puis-je maintenant mettre à jour la valeur de mon fichier de composant. Je souhaite pouvoir accéder à l'objet compinfo Lire et modifier et comment puis-je accéder aux différents objets en fonction du formulaire de formulaire? p> p>
4 Réponses :
Veuillez jeter un oeil.
sur votre TMPL: p> sur app-ig-dropdown.ts: p> public compInfos: Array<CompInfo> = [
{
guid :'820E04E0-8084-4D9C-A268-D8C0D21E74F6',
width:'350px',
placeHolder: ' -- Select --',
fieldText:'Social Media 1'
},
{
guid :'820E04E0-8084-4D9C-A268-D8C0D34E74F6',
width:'350px',
placeHolder: ' -- Select --',
fieldText:'Social Media 2'
}
]
public getCompInfo(guid): CompInfo {
return this.compInfos.find(c => c.guid === guid);
}
public setCompInfo(compInfo): void {
this.compInfos = this.compInfos.filter(c => c.guid!== compInfo.guid);
this.compInfos.push(compInfo);
}
//example function
public updateCompInfo(index): void {
let compInfo: CompInfo = this.compInfos[index];
compInfo.width = '100px';
this.setCompInfo(compInfo);
}
Comment puis-je mettre à jour une valeur basée sur la valeur de la commande. Également basé sur votre exemple, il semble qu'il n'y a aucun moyen de spécifier les valeurs d'objet dans le modèle
Cela nécessite toujours de connaître l'index dans le tableau du contrôle avant que je puisse la mettre à jour. Si je connais l'index, je pourrais appeler un simple ceci.compinfos [0] .fieldtext = "démo";
Avez-vous essayé d'utiliser * ngfor?
Et vous devez produire une fonction de mise à jour dans un composant enfant comme ci-dessus
@Misterniceguy Comment ça va?
J'ai fini par utiliser le code ci-dessous pour mettre à jour les valeurs car elles ne nécessitent pas de savoir à l'avance:
public updateArrayElement(formControlValue, element, newValue) {
this.index = this.compInfos.findIndex(x => x.formControlName === formControlValue);
this.compInfos[this.index][element] = newValue;
}
Vous ne pouvez pas mettre à jour le composant parent. Vous pouvez cependant envoyer un événement au parent. Dans votre composant enfant, ajoutez pour mettre à jour l'objet, émettre un événement: p> Vous devez définir les objets du composant parent : P> interface CompInfo {
public guid: string;
public width: string;
public placeHolder: string;
public fieldText: string;
}
OK après plus d'autres recherches et joues autour de moi, j'ai compris une manière beaucoup plus simple.
Declare @viewchild in Parent P> Alors je peux obtenir des informations sur un enfant via p> et si je veux définir certains éléments de l'objet p> pas besoin d'index ou d'essayer de trouver une valeur pour un contrôle. Il suffit d'accéder à l'élément directement obtenir la valeur ou de la mettre à jour de parent. P> p>