2017-09-22 3 views
0

Mise à jour de ma question pour être plus précis.Mise à jour - Existe-t-il un moyen d'utiliser un modèle de formulaire général pour plusieurs formes angulaires

Je travaille sur un projet angulaire 2 et j'ai un modèle de formulaire général que je souhaite utiliser pour environ 5 formulaires, car ils utilisent tous le même code html. J'ai choisi de le faire de cette façon afin d'éviter de créer plusieurs modèles avec une structure html en double.

Les champs, y compris le type de widget, font partie de mon modèle de données qui provient du serveur. À l'intérieur de mon composant de forme générale, ces types de widget sont utilisés pour renvoyer le code HTML du widget. À l'intérieur de mon template, la directive innerHTML prend le html retourné et le rend dans la vue. Le modèle ne sait rien sur les contrôles de formulaire. Il prend juste les données de forme du serveur, et rend les résultats. Ce modèle n'est pas seulement utilisé pour les formulaires standard, mais également pour les filtres, car les filtres sont simplement une autre forme. Il existe également un composant général de filtres qui étend le composant de formulaire. Donc, pour mes filtres, j'aimerais pouvoir lier ces champs à mes données pour filtrer une liste d'éléments. Le problème est que puisque le html du widget est rendu à l'intérieur du composant, et ajouté au dom en utilisant innerHTML dans la vue, il n'y a aucun moyen d'utiliser ngModel sur les entrées. Peut-être une façon de le faire peut-être d'utiliser ngSwitch à l'intérieur du modèle pour rendre le widget correct basé sur le type de widget, mais je n'étais pas exactement sûr.

Répondre

0

Vous pouvez créer un composant de formulaire générique pour cela et utiliser le composant comme vous le souhaitez.

Si vous ne pouvez pas créer un composant générique, vous pouvez également utiliser exactement le même modèle html pour tout composant que vous créez. Supposons que vous avez comp1 et comp2

@Component({ 
    selector: 'comp1', 
    templateUrl: 'MyGenericTemplate.html' 
}) 

@Component({ 
    selector: 'comp2', 
    templateUrl: 'MyGenericTemplate.html' 
}) 
+0

Great! Merci beaucoup! Comment lier en utilisant ngModel dans ce cas? Dois-je me lier aux mêmes objets sur les deux formulaires? – Teeman

+0

Supposons que vous ayez une variable nommée var1 dans le modèle, vous devez également avoir cette variable dans le composant. En fait, les composants et les fichiers modèles fusionnent en un seul fichier lors de la compilation. Mais je ne pouvais pas comprendre pourquoi vous ne pouvez pas simplement avoir un seul composant pour tous? Juste faire un composant générique. Je pense pas besoin de faire un modèle pour plusieurs composants. Je suppose que vous faites quelque chose de mal. – omeralper