Mon problème est que je dois appeler updateCard (), avec uid et name, les deux chaînes. Cependant, le nom apparaît indéfini ou invalide chaque fois que j'appelle la fonction. Quel serait un bon moyen de passer le nom d'entrée à la fonction lorsque le bouton udpate est enfoncé. Je sais que la fonction fonctionne à partir de tests. J'ai essayé ngModel et passé l'identifiant dans la fonction.
<div>{{card.name}}
<form>
Name: <input type="text" id = "name" [(ngModel)] = name><br>
<input type="button" value="Update Name" (click)='bcService.updateCard(card.id, name)'>
</form>
</div>
4 Réponses :
Pouvez-vous essayer en ajoutant ngModelOptions de manière autonome?
<input type="text" id = "name" [(ngModel)] = "name" [ngModelOptions]="{standalone: true}">
Je vais essayer ça.
Si j'étais dans votre situation, je travaillerais avec une forme réactive. https://angular.io/guide/reactive-forms Mettre à jour vous pouvez faire quelque chose comme ceci:
form:FormGroup=new FormGroup({
id:new FormControl(""),
name:new FormControl("")
});
constructor() { }
ngOnInit() {
}
onSubmit(){
this.bcService.updateCard(
this.form.get("id").value,
this.form.get("name").value
);
}
<div>
<span>{{card.name}}</span>
<form [formGroup]="form" (ngSubmit)="onSubmit()">
Name: <input type="text" id="name"><br>
<input type="submit" value="Update Name">
</form>
</div>
Pourquoi suggérez-vous cela pour un cas d'utilisation aussi simple?
@DamianC vous avez raison, le cas est tellement simple pour réactif, j'utilise beaucoup les formes R c'est pourquoi je n'ai pas analysé la situation avant de poster
Il peut être utile de montrer comment utiliser les formulaires réactifs dans ce scénario.
Oui, je viens de publier un exemple, mais je pense que votre solution devrait très bien fonctionner.
Vous ne voulez pas utiliser card.name?
<div>
<span>{{card.name}}</span>
<form>
Name: <input type="text" id="name" [(ngModel)]="card.name"><br>
<input type="button" value="Update Name" (click)="bcService.updateCard(card.id, card.name)">
</form>
</div>
card.name est la valeur de ma base de données. Le nom est l'entrée avec laquelle j'essaie de mettre à jour cette valeur.
Une raison pour laquelle ils ne peuvent pas pointer vers la variable car ce sont les mêmes données?
essayez ceci, cela devrait fonctionner. utilisez event.value comme ci-dessous
<input type="button" value="Update Name" (click)='bcService.updateCard(card.id, event.value)'>
bcService.updateCard (card.id, nom) essayez-vous d'envoyer la valeur de la zone de saisie?