Réglage de la validité d'un Angulaires 2 contrôle de l'intérieur d'un composant personnalisé
J'ai un custom Ng2 composant un je suis en utilisant le Modèle de l'approche Axée sur la.
<form [ngFormModel]="myForm" class="layout vertical relative">
<my-custom-comp ngControl="currentValue"></my-custom-comp>
</form>
Donc à l'intérieur de mon composant personnalisé, j'ai toute la logique j'ai besoin mais je ne peux pas trouver un moyen pour obtenir une référence à la ngControl configurer pour qu'il valide ou non de l'intérieur de mon composant personnalisé.
vous pouvez donner le contrôle de l'ensemble des composants de la manière [foo] ou [(foo)]. la façon juste ajouter un contrôle dans même .fichier ts et passer tout contrôle de la composante [foo]="fbgroup.find('currentValue')"
J'ai trouvé un moyen d'obtenir "un" ou "le" NgControl (atm je ne suis pas sûr de qui je suis) via
Je suppose que vous pouvez simplement injecter
J'ai essayé d'injecter le NgControl mais je suis
La dépendance cyclique erreur vient de la Vaadin VAADIN_DATE_PICKER_CONTROL_VALUE_ACCESSOR github.com/vaadin/vaadin-date-picker/blob/master/directives/... voir ci-dessous pour la réponse.
J'ai trouvé un moyen d'obtenir "un" ou "le" NgControl (atm je ne suis pas sûr de qui je suis) via
this._control = this._injector.get(NgControl, null);
mais je ne sais pas comment le configurer pour non valide pour le tester...Je suppose que vous pouvez simplement injecter
NgControl
constructor(private ngControl:NgControl)
dans votre composant sans injection de l'injecteur et de le faire à partir de là. Dans NgControl
vous pouvez ajouter d'autres validateurs ou de l'utilisation setErrors()
(pas testé)J'ai essayé d'injecter le NgControl mais je suis
Cannot instantiate cyclic dependency! NgControlName
je l'ai fait essayer à et @SkipSelf() @Host() @Optional()
mais l'erreur resteLa dépendance cyclique erreur vient de la Vaadin VAADIN_DATE_PICKER_CONTROL_VALUE_ACCESSOR github.com/vaadin/vaadin-date-picker/blob/master/directives/... voir ci-dessous pour la réponse.
OriginalL'auteur Brett | 2016-06-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez consulter ce lien pour un exemple: https://github.com/byavv/angular2-playground/tree/master/client/app/modules/forms_explore
De certains aspects clés:
Vous avez besoin de mettre en œuvre ControValueAccessor.
Injecter dans votre composant le ngControl et l'inscrire:
De l'intérieur de vos composants, vous devriez avoir une forme qui valide le champ de sorte que vous pouvez vous abonner à émettre de la valeur correcte ou définir l'erreur de la mère ngControl forme.
OriginalL'auteur Brett
mais il n'y a actuellement aucun moyen de définir explicitement à
valid
ouinvalid
.Vous pouvez définir un programme de validation et de modifier les critères de sorte qu'il marque le contrôle non valide.
Voir, par exemple, https://github.com/angular/angular/issues/4933
this.myForm
de l'intérieur du composant. Le validateur personnalisé est une idée, mais il se sent comme une façon détournée de le faire... il y a un événement que je peux émettre à trigge l'état non valide ?Pas pour autant que je sais. Pouvez-vous donner plus de code. Pour moi, il n'est pas clair ce que vous êtes en train de faire ou d'essayer de l'accomplir. Vous pourriez passer de la forme ou de contrôle dans votre composant personnalisé.
Je suis en train d'écrire un composant personnalisé, (un datepicker) le contrôle de validité est mise en œuvre au sein de la composante. De l'extérieur, je voudrais l'utiliser comme une forme normale d'entrée. Donc, je voudrais ajouter le ngControl, et de l'inscrire à un ngFormModel. Est plus clair ?
Je pense que vous devriez mettre en œuvre
ControlValueAccessor
(il existe plusieurs réponses déjà)J'ai mis en œuvre
ControlValueAccessor
mais je ne vois pas où ou comment mettre de la validitéOriginalL'auteur Günter Zöchbauer
OriginalL'auteur SoEzPz