2017-09-13 2 views
1

je la classe suivante:AutoMapper-ts objet mis en correspondance est vide lorsque je tente de le convertir en un type dactylographiée

class testClass 
{ 
    public text: string; 
} 

Je crée la carte suivante à l'aide AutoMapper-ts:

AutoMapper.createMap('source', 'dest') 
      .convertToType(testClass); 

Et puis faire ma correspondance:

this.newObject = AutoMapper.map('source', 'dest', this.anotherObjectWithSameProperties); 

Mais this.newObject est toujours un objet testClass vide. Si je supprime la ligne suivante:

.convertToType(testClass); 

Ensuite, les propriétés seront mises en correspondance à this.newObject comme prévu, mais le type de this.newObject sera Object au lieu de testClass.

Comment puis-je mapper un objet à un autre objet en utilisant automapper-ts, mais le nouvel objet est-il le type requis?

MISE À JOUR

Les vitrines AutoMapper-TS documentation cette méthode avec un test unitaire, mais ce test d'unité spécifie le mappage explicitement:

.forMember('property', (opts: AutoMapperJs.IMemberConfigurationOptions) => { opts.mapFrom('ApiProperty'); }) 

Si je le fais avec mon text propriété comme si :

AutoMapper.createMap('source', 'dest') 
    .forMember('text', 'text'); 
    .convertToType(testClass); 

alors ma mise en œuvre fonctionne comme prévu, mais tha t défie tout le point d'utiliser automapper en premier lieu.

Répondre

0

vous lancez le type spécifié après la carte comme ceci:

this.newObject = AutoMapper.map('source', 'dest', this.anotherObjectWithSameProperties) as testClass; 

ou

this.newObject = <testClass> AutoMapper.map('source', 'dest', this.anotherObjectWithSameProperties); 
+0

Non. 'this.newObject' est toujours un objet au lieu de' testClass'. – Viqas