Tapuscrit Constructeur avec plusieurs paramètres et l'injection d'une rubrique
J'ai un tapuscrit de classe comme ci-dessous:
export class ImageItem{
constructor(public Id: number, public ImageUrl: string, public Caption: string, public Description: string, private _sanitizer: DomSanitizer)
{
}
}
tous les paramètres du constructeur sont des propriétés qui sont liées à la classe, mais le dernier élément est une classe qui est injecté dans ma classe. Mon problème est que si je veux créer un objet de cette classe, je veux faire quelque chose comme ci-dessous:
var a=new ImageItem(1, 'image1', 'http://aaa.com/aa.jpg', '')
Mais il me donne une erreur à cause de l'injection de l'élément. Je me demandais comment je dois résoudre ce problème.
Si la classe a besoin d'un DomSanitizer pour fonctionner correctement, pourquoi ne pas vous passer? Et si il n'a pas besoin d'un DomSanitizer, pourquoi ne le constructeur s'attendre? C'est ce que vous devriez demander.
Parce que C'est de l'injection de l'objet. Je ne veux pas de quelqu'un qui l'aide ImageItem pour l'examiner.
Pas de. Angulaire injecte des services, mais pas les données de la description ou de la légende. Et ça ne change rien à ma question. Si vous n'avez pas le passer lors de la création de l'objet, et il en a besoin pour fonctionner, tout ce que vous aurez est un objet qui ne se comportera pas comme il le devrait.
Et si cet objet est censé être créé et injecté par Angulaire, alors vous ne devriez pas le créer vous-même.
Parce que C'est de l'injection de l'objet. Je ne veux pas de quelqu'un qui l'aide ImageItem pour l'examiner.
Pas de. Angulaire injecte des services, mais pas les données de la description ou de la légende. Et ça ne change rien à ma question. Si vous n'avez pas le passer lors de la création de l'objet, et il en a besoin pour fonctionner, tout ce que vous aurez est un objet qui ne se comportera pas comme il le devrait.
Et si cet objet est censé être créé et injecté par Angulaire, alors vous ne devriez pas le créer vous-même.
OriginalL'auteur Mehrdad Babaki | 2017-08-19
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez besoin est un usine qui est en mesure de créer des instances de ce type de classe et dans le même temps, injecte les propriétés que vous aimeriez avoir injecté.
Il ressemblerait à quelque chose comme ça.
La de l'image-objet.ts définit une classe simple:
L'usine est un injectable service qui consiste à injecter de la DomSanitizer et dispose d'une méthode de mesure de créer des instances de ImageItem.
La app.composante.ts importations de l'usine en tant que fournisseur et l'utilise pour créer des instances de ImageItem.
Dans angularjs(1) il est possible d'utiliser l'injecteur afin de créer une instance et il a été possible en même temps de donner quelques valeurs locales à être utilisé lors de l'injection.
Angulaire (2) toutefois, le Injecteur service ne fournit plus cette fonctionnalité.
nope. C'est prettty beaucoup la façon habituelle de faire dans n'importe quel langage de programmation orientée objet, je ne pense pas que vous allez trouver une meilleure façon.
Donc, je suis undestanding puis, ce n'est pas une des meilleures pratiques pour mettre de la logique dans les modèles. Dans ce cas, est préférable à la place de la logique dans un des services et à l'intérieur que l'appel de service à tous les services dont vous avez besoin et de remplir le modèle de droite?
Oui. Les modèles doivent tenir etat. Vous pouvez avoir un coup d'oeil à Redux(ngrx-store) pour un exemple de cette.
OriginalL'auteur toskv