J'ai un composant NG2 personnalisé A, j'utilise l'approche axée sur le modèle.
<form [ngFormModel]="myForm" class="layout vertical relative"> <my-custom-comp ngControl="currentValue"></my-custom-comp> </form>
3 Réponses :
this.myForm.controls['currentValue'].... but there is currently no way to explicitely set it to valid or invalid.You can define a validator and change the criteria so it marks the control invalid. See for example https://github.com/angular/angular/issues/4933
Je n'ai pas accès à this.myform code> dans le composant. Le validateur personnalisé est une idée, mais il se sent comme une façon de le faire ... Y a-t-il un événement que je peux émettre pour trigger l'état invalide?
Pas aussi loin que je sache. Pouvez-vous fournir plus de code? Pour moi, ce n'est pas clair ce que vous faites ou essayez d'accomplir. Vous voudrez peut-être passer le formulaire ou contrôler dans votre composant personnalisé.
J'écris un composant personnalisé (A dayspicker) La vérification de la validité est implémentée dans le composant. De l'extérieur, je voudrais l'utiliser comme une entrée de forme normale. Je vais donc ajouter le NGControl et inscrivez-le à un ngformmodel. Est-ce plus clair?
Je suppose que vous devriez simplement implémenter contrôlvalueacessor code> (il existe déjà plusieurs réponses)
Fondamentalement, c'est la même chose que Vaadin.com/elements/-/element/vaadin-date -Picker un composant standard connecté à un ngformModel
J'ai mis en œuvre ControlValueAccessor code> mais je ne vois pas où ou comment définir la validité
@Brett j'ai exactement le même problème
Vous pouvez vérifier ce lien pour un exemple de travail: https://github.com/byavv/angular2-playground/tree/master/Client/app/modules/forms_explore
Quelques aspects clés:
Vous devez implémenter ControvalueAccessor. P>
this.dateForm = builder.group({ dateControl: ['', Validators.compose([Validators.required, CustomValidators.frenchDate])], }); this.dateForm.valueChanges .subscribe((val) => { if (this.dateForm.valid) { this.onChange.emit(this.dateToTimestamp(val.dateControl)); } else { this.ngControl.control.setErrors({ "wrongDate": true }); } });
Comment définir valide strong> ou invalide fort> sur n'importe quel groupe de formes p>
xxx pré> blockQuote>
pourrait ne pas être la solution requise pour cette question mais cela a fonctionné pour ce dont j'avais besoin! Merci
Vous pouvez donner tout le contrôle à la composante de la manière [FOO] ou [(FOO)]. The Way juste ajouter un contrôle dans les mêmes .TS Fichier et transmettez le contrôle entier au composant [FOO] = "FBGROUP.Find (" CurrentValue ")"
J'ai trouvé un moyen d'obtenir "A" ou "le" ngcontrol (guichet automatique, je ne suis pas sûr que celui que j'obtiens) via
this._control = this._injector.get (ngcontrol, null); code> mais Je ne sais pas comment le configurer à invalide pour le tester ...
Je suppose que vous pouvez simplement injecter
ngcontrol code>
constructeur (privé ngcontrol: ngcontrol) code> dans votre composant sans injecter l'injecteur et l'obtenir de là. Dans
ngcontrol code> Vous pouvez ajouter des validateurs supplémentaires ou utiliser
setErrors () code> (non testé)
J'ai essayé d'injecter le ngcontrol mais je reçois
ne peut pas instantifier la dépendance cyclique! Ngcontrolname code> J'ai essayé de et
@skipself () @host () @Optional () code> mais l'erreur reste
L'erreur de dépendance cyclique provenait du Vaadin Vaadin_date_picker_control_value_accessor github.com/vaadin/vaadin-date-picker/blob/master/directives/ ... Voir ci-dessous pour répondre.
Bonjour, n'importe quelle avance sur ce cas?