2017-10-07 6 views
1

Je suis tombé juste dans la découverte douloureuse que si vous liez des valeurs aux attributs de votre entrée ngModel ne les reconnaît pas, le plus visible avec l'erreur qu'il se produit au sujet d'un attribut name ou définissez le ngModelOptions à standalone. Je suis tombé sur une page sur github traitant de ce problème mais les commentaires ont cessé en 2016. Leur solution à ce jour est de rendre l'entrée autonome et elle sera exclue de la forme globale, ce qui n'est pas ce que je veux faire. Pour autant que je sache, [attr.name]="..." [attr.id]="..." est le seul moyen de lier les valeurs de propriété. Pour que Angulaire soit ce qu'elle est en tant que plate-forme, vous ne vous attendez pas à ce que quelque chose comme la liaison de propriété arrête tout votre flux de travail et nécessite un miracle avancé. Il semble que si nous voulons faire autre chose que d'avoir une forme prédéfinie simple où les gens peuvent mettre leur nom, leur adresse et leur super pouvoir, nous devons aller avec quelque chose d'autre dans le monde réel. Pourquoi ne pas avoir plus de documentation décrivant les limitations actuelles des FormsModules parce que je suis sûr que beaucoup de gens qui se familiarisent avec les choses qui font Angular ANGULAR par défaut ont des attentes bien plus élevées que les FormsModules. Y a-t-il une résolution ou des informations actuelles sur les progrès de ce problème?Existe-t-il un moyen de faire en sorte que ngModel reconnaisse la syntaxe de liaison de propriété?

+1

Vous voudrez peut-être envisager de reformuler la question; À l'heure actuelle, vous décrivez un problème théorique qui est très difficile à comprendre sans voir le code avec lequel vous essayez de travailler, et la seconde partie de la question se résume à une diatribe déguisée. Vous auriez une plus grande chance d'obtenir une bonne réponse si vous deviez montrer un exemple de code, et réduire le commentaire. – Claies

+0

'[attr.name]' est le moyen de lier des attributs comme 'attr' suggère,' [nom] 'est la syntaxe à lier aux propriétés. –

Répondre

0

La liaison à ngModel est prise en charge uniquement pour les composants qui implémentent ControlValueAccessor.

Pour lier aux propriétés personnalisées utilisent

@Input() 
myProp:string; 

@Output() 
myPropChange:EventEmitter<String> = new EventEmitter<String>(); 

La convention de nommage foo (entrée) et fooChange (sortie) est nécessaire pour soutenir les deux sens de liaison comme

[(myProp)]="bar" 

Si cette appellation n'est pas suivi, seule la liaison explicite aux deux est prise en charge

[myProp]="bar" (myPropX)="bar = $event" 

pour

@Input() 
myProp:string; 

@Output() 
myPropX:EventEmitter<String> = new EventEmitter<String>();