0
votes

Angulaire - Vérifiez si toutes les options sont sélectionnées pour activer le bouton

Ceci est une application quiz, dans ce scénario, mon bouton Suivant redirigera vers une autre page et il est désactivé par défaut fort>. Si je choisis toutes les options, il devrait activer forte>.

Remarque: strong> p>

Ma fonctionnalité de sélection des options et le choix correct / faux fonctionne bien, Je ne peux tout simplement pas comprendre comment activer lorsque chaque option est sélectionnée. Strong> p>

Toute aide ou suggestions? Démo de travail: https://stactblitz.com/edit/angular-ivy-5qtyxy P>

<button class="btn-next" [disabled]="buttonDisabled">
  Next
</button>


2 commentaires

Peu importe, si l'utilisateur sélectionne les bonnes réponses, non?


Oui. Cela signifie qu'aucune réponse ne doit être désélectionnée ou laissée, vous pouvez dire. Sinon, l'utilisateur ne peut pas continuer. J'espère que tu comprends


3 Réponses :


0
votes

vous pouvez utiliser Object.keys pour cela, comme ceci

​​App.component.html

isDisabled(): boolean {
  return Object.keys(this.answerEvaluation).length !== Object.keys(this.practiceQuizData).length;
}

app.component.ts

<button class="btn-next" [disabled]="isDisabled()">
    Next
  </button>


9 commentaires

Il permet 2-3 options plus tôt, pourquoi?


Le bouton devient actif lorsque les 5 questions sont répondues


À l'heure actuelle, dans votre cas, il devient actif lorsque je clique sur la dernière option. Cela signifie que si j'ai sélectionné les réponses à toutes les autres questions, puis que je clique sur une option de la question restante, cela active le bouton. Pouvez-vous s'il vous plaît aider avec ça


Veuillez modifier dans stackblitz, vous comprendrez mieux ce que j'essaie de dire


essayez ma version stackblitz.com/edit/angular-ivy-yuozwg


Oui, le même cas se produit, dont j'ai discuté.


Cliquer sur la première option de la dernière question restante, l'active. Pourquoi donc?


il est activé lorsqu'au moins une réponse à chaque question est sélectionnée. ce n'est pas ce que tu veux?


Non, chaque option de chaque question, désolé si je n'étais pas clair



0
votes

Les réponses fonctionneront, mais vous pouvez le faire de la manière angulaire montrée ici:

https://angular.io/guide/forms-overview

Il y a 2 façons: formulaires basés sur des modèles ou réactifs

Ensuite, vous pouvez lier la propriété désactivée à la propriété valide du formulaire.

Choisissez ce qui correspond le mieux à vos besoins. J'espère que cela vous sera utile.


2 commentaires

Je pense que cela fonctionnerait mais n'éditera pas ce que j'ai fait prendre du temps?


Oui, cela prendra du temps. Par conséquent, vous pourrez en tenir compte la prochaine fois, lors de la création de formulaires.



1
votes

Mon point de vue à ce sujet est de définir le buttonDisabled comme un getter, puis d'évaluer pour chaque question si son statut permet la navigation vers la page suivante ...

Dans ma mise en œuvre, l'utilisateur doit sélectionner toutes les réponses aux questions de type 2, mais une seule réponse aux questions de type 1. Si ce n'est pas ce que vous voulez, veuillez l'indiquer dans les commentaires, c'est juste ce qui m'a paru logique. J'espère que cela vous aide déjà.

Des questions? Demandez simplement.

Voici mon stackblitz


0 commentaires