2017-10-13 9 views
1

J'essaie d'obtenir les données de oracle db et de les afficher. J'ai créé un service en utilisant express api et le nœud et capable de l'exécuter avec succès. J'ai créé un service angulaire pour récupérer les données et les affecter dans un composant angulaire, mais je ne suis pas capable de mapper la réponse JSON à la variable angulaire. S'il vous plaît vérifiez le code ci-dessous et aidez-moi ce que j'ai besoin de changer dans component.ts angulaire et comment puis-je utiliser cette variable en html.Conversion de la réponse JSON d'oracle en variable angulaire 2

JSON données Oracle DB:

[{"COUNT":27}] 

Service angulaire:

getCount(): Promise<String[]> { 
    return this.http.get(this.heroesUrl) 
       .toPromise() 
       .then(response => response.json().data) 
       .catch(this.handleError); 
    } 

component.ts angulaire

dataGS : String[]; 
getData(): void { 
    this.dataService 
     .getCount() 
     .then(dataGS => this.dataGS = dataGS); 

Répondre

0

Votre réponse n'a pas une propriété data, il est juste un tableau. Ainsi, au lieu de:

.then(response => response.json().data) 

faire:

.then(response => response.json()) 

Maintenant, vous obtiendrez votre tableau. Puis, comme proposé par Jitender vous pouvez itérer votre réponse:

<div><p *ngFor="let d of dataGS ">{{d}}</p></div> 
0

Qu'en est-

getCount(): Promise<String[]> { 
    return this.http.get(this.heroesUrl) 
       .toPromise() 
       .then(response => { 
        response.json().map(function(item) { 
          return item['COUNT']; 
         }) 
         }) 
       .catch(this.handleError); 
    } 

dans votre html

<div><p *ngFor="let d of dataGS ">{{d}}</p></div> 
+0

Je ne reçois aucune erreur mais que dois-je utiliser dans le modèle html obligatoire pour ce cas – user2662882

+0

contrôle mis à jour ans – jitender

+0

encore je ne reçois pas, je doute cette réponse en ligne .json(). map (function (item) { return item ['COUNT']; récupère les données de la réponse – user2662882

0

Vous pouvez y parvenir avec l'aide de template bindings dans angulaire. Par exemple - Dans votre composant vous recevez this.dataGS = [{"COUNT":27}] après avoir obtenu les données du db. Ensuite, sur votre html template vous pouvez afficher avec l'aide de Interpolation comme

<div>{{dataGS[0].count}}</div> 
+0

suis l'erreur ci-dessous lors de l'utilisation de ce modèle html heroes.component.html: 3 ERREUR TypeError: Impossible de lire la propriété '0' de non défini à Object.eval [Comme updateRenderer] (heroes.component.html: 3) à Object.debugUpdateRenderer [comme updateRenderer] (services.ts: 477) à checkAndUpdateView (view.ts: 413) à callViewAction (view.ts: 767) à execComponentViewsAction (view.ts: 700) à checkAndUpdateView (view.ts: 413) à callViewAction (view.ts: 767) à execEmbeddedViewsAction (view.ts: 726) à checkAndUpdateView (view.ts: 410) – user2662882

+0

d'abord initialiser 'this.dataGS = [] 'comme un tableau vide dans le' ngOnInit' ou le constructeur –

+0

Je reçois l'erreur ci-dessous lors de la compilation du fichier ts, node_modules/rxjs/Subject.d.ts (16,22): erreur TS2415: Classe 'Sujet 'étend incorrectement la classe de base' Observable '. Les types de propriété 'lift' sont incompatibles. Type ' (opérateur: opérateur ) => Observable ' n'est pas assignable au type ' (opérateur: opérateur ) => Observable '. Le type 'Observable ' n'est pas assignable au type 'Observable '. Le type 'T' n'est pas assignable au type 'R'. – user2662882