J'ai besoin de peupler l'option sélectionnée à partir d'un élément de matériau angulaire sélectionné à une textarea. J'utilise Ngmodel et cela a fonctionné mais j'ai eu l'erreur comme suit dans la console:
export class myComponent implements OnInit { buttonDisabled: boolean = false; . . . optionMessages = [ { id: 1, option: 'Message 1', message: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec aliquam bibendum nisi, a malesuada metus consectetur vitae. Proin eget metus eu orci vehicula bibendum ut ut lectus.' }, { id: 2, option: 'Message 2', message: 'Quisque et nisl nec mi placerat iaculis. Phasellus dapibus dui tempor, efficitur ligula ut, semper eros. Praesent scelerisque, odio sit amet elementum ornare, ex neque porttitor ipsum, nec sollicitudin mi leo sit amet sapien. Donec porttitor sapien sit amet libero dapibus consequat.' }, { id: 3, option: 'Message 3', message: 'Nam accumsan fringilla sapien, ac blandit nunc placerat in. Integer ut est interdum dolor ullamcorper bibendum. Pellentesque dignissim erat vitae eros malesuada lobortis. Praesent pharetra, nunc a hendrerit commodo, diam eros fringilla erat, sit amet porttitor odio erat egestas dolor. Sed pellentesque sed diam a egestas. Integer non rhoncus augue.' }, { id: 4, option: 'Message 4', message: 'Donec egestas elit sapien, in dictum mauris euismod ac. Maecenas gravida leo eget quam placerat lobortis. Praesent risus elit, congue sit amet metus egestas, porta aliquam sem. Nam blandit auctor odio non fringilla.' }, { id: 5, option: 'Message 5', message: 'Quisque efficitur egestas lectus ut molestie. Mauris eleifend ligula nec dignissim tempus. Aenean nec quam pellentesque, eleifend metus id, efficitur tellus.' }, ]; reminderMessageForm = new FormGroup({ option: new FormControl('', Validators.required), reminder: new FormControl('', [ Validators.required, Validators.minLength(15) ]), }); get reminder() { return this.reminderMessageForm.get('message'); } . . . }
3 Réponses :
Vous mélangez entre des formes pilotées et réactives.
où est sélectionnéReminder dans votre code? p> est lié à p> option: new FormControl('', Validators.required),
SELECTEDREMinder est dans
basé à partir de la documentation publique de l'angulaire, Contrôle de formulaire avec Ngmodel strong> :
fichier html p> fichier TS p> Cela a été obsolète pour quelques raisons. Premièrement, les développeurs ont
trouvé ce motif déroutant. Il semble que le ngmodel réel
La directive est utilisée, mais elle est en fait une propriété d'entrée / sortie
nommé Ngmodel sur la directive de forme réactive qui se rapproche simplement
(une partie de) son comportement. Plus précisément, il permet d'obtenir / définir le
Valeur et intercepter des événements de valeur. Cependant, certains des autres de Ngmodel
caractéristiques - comme retarder les mises à jour avec gonflement ou exporter le
directive - ne travaillez tout simplement pas, ce qui a naturellement causé certains
Confusion. P>
blockQquote> Pour mettre à jour votre code avant V7, vous voudrez décider de vous contacter avec des directives de formulaire réactif (et de gérer / définir des valeurs à l'aide de modèles de formes réactifs) ou de passer aux directives axées sur les modèles. P > Voici les choix: strong> p> Option 1 - Utilisez des formes réactives strong> p> fichier html p> < Pre> xxx pré> fichier TS p> HTML fichier p> fichier TS p> Par défaut, lorsque vous utilisez ce modèle, vous verrez un avertissement de dépréciation une fois dans MODE DEV. Vous pouvez choisir de faire taire cet avertissement en fournissant une configuration pour Alternativement, vous pouvez choisir de superviser un avertissement séparé pour chaque instance de ce modèle avec une valeur de configuration de "toujours". Cela peut aider à suivre où dans le code que le motif est utilisé comme code est mis à jour. P> Autre référence: P>
réactifformsmodule code> à l'heure d'importation: p>
Merci pour votre réponse mais j'utilise un élément sélectionné. Avez-vous une idée de la manière dont Remplacez NGModel pour sélectionner des éléments?>
@Beatrizic - vous l'avez probablement trouvé un moment, mais cela fonctionne exactement de la même manière pour sélectionner des éléments, en utilisant SETValue
Utilisez une approche: maintenant dans le modèle Lors de l'affichage dans textarea, affichez-la comme suit: valeur = "{{remindmessageform.get (" option "). Valeur}}" Code> P >
<form class="reminder-message" [formGroup]="reminderMessageForm" #f="ngForm" (ngSubmit)="reminderMessage(f.value)">
<mat-form-field class="full-width select">
<mat-select formControlName="option" placeholder="Choose a reminder" >
<mat-option *ngFor="let opt of optionMessages" [value]="opt.message">{{ opt.option }}</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="full-width textarea-message">
<textarea matInput formControlName="reminder" value="{{ reminderMessageForm.get('option').value}}" cols="5" rows="7" readonly></textarea>
</mat-form-field>
<mat-dialog-actions class="actions" align="end">
<button mat-button class="send-message action" [disabled]="!buttonDisabled" type="submit">
<span>Send</span>
</button>
<button mat-button mat-dialog-close class="close action" (click)="closeDialog()">
<span>Close</span>
</button>
</mat-dialog-actions>
</form>