0
votes

Angulaire - Obtenir la valeur JSON dans la console mais pas en vue

Film / ID / extern_ids? API_KEY = MYAPIKEY

{"ID": 335984, "IMDB_ID": "TT1856101", "bladerunner2049", "instagram_id": "bladerunnermovie", "twitter_id": "Blaaderunner"}

Voulez-vous afficher la valeur de tous les identifiants sociaux tels que Facebook, Insta et Twitter. Je ne sais pas ce qui ne va pas, je fais

composant: xxx

html xxx


4 commentaires

Dans cette ligne console.log (res.facebook_id); Vous imprimez sur Facebook_ID lors de la ligne ci-dessous, vous enregistrez la variable de votre composant la propriété externe_ids du JSON this.external_ids = Res .external_ids; . Est-ce correct?


Avez-vous essayé uniquement avec {{FACEBOOK_ID}} au lieu de {{social.facebook_id}}?


Je devrais faire this.external_ids = res à l'intérieur de la 2e abonnement


@Lucaregazzi Oui extern_ids détient toutes les trois valeur sociale


3 Réponses :


1
votes

Votre essai d'utiliser ngfor code> sur un objet. ngfor code> ne peut que itération des tableaux sur des tableaux. Semble plus facile pour vous de les afficher directement dans l'interface utilisateur avec extern_ids.facebook_id code> mais si vous voulez vraiment utiliser ngfor code> pour les afficher en boucle sur votre objet, vous peut utiliser objet.keys code> pour obtenir une matrice pour ngfor code>

premier exposent objet.keys code> à partir de votre composant. P>

<p *ngFor="let social of external_ids | keyvalue" class="text-primary">
    {{social.value}}
</p>


9 commentaires

Merci! En réalité, ID est un identifiant de film et des données JSON que je reçois ne semble pas avoir une valeur clé. J'ai essayé ci-dessus mais je ne suis toujours pas corrigé


Ceci est l'erreur: Error TypeError: impossible de convertir non défini ou null en objet sur MOVIECOMPONENT.KEYS [comme objetkeys]


On dirait que vous avez manqué quelque chose de ce que j'ai dit. J'ai testé cela sur Stackblitz. Sur quelle ligne obtenez-vous cette erreur et qu'est-ce que vous avez exactement sur cette ligne?


Erreur affiche sur ceci:

et Console dit "Impossible de déshabiller la propriété ID de" non défini "ou" NULLO " . "


Oui, ça a fonctionné! Merci beaucoup, je viens de supprimer un identifiant externe à partir du constructeur: "const {id, ... external_ids} = res.external_ids; remplacé par" const {id, ... external_ids} = res;


La dernière chose que je ne veux pas afficher le champ imdb_id?


Faites ce que const {id, imdb_id, ... external_ids} = res


Plus d'informations sur la déstructuration ici: développeur.mozilla.org/en -Us / Docs / Web / JavaScript / Référence / ...


@Rrrpandey - J'ai ajouté une autre méthode à itérer sur votre objet dans ma réponse. Ceci est probablement une méthode plus facile plutôt que d'utiliser objet.keys .



1
votes

Vous devez convertir votre external_ids à un tableau d'identifiants. Il est facile, en utilisant soit objet.Keys (external_ids) ou (external_ids) en utilisant lodash s est fonction.

et N'oubliez pas de vous désabonner de votre abonnement . Pour qu'il utilise l'une des options énumérées ci-dessous:

  1. Faites un abonnez-vous à l'intérieur Ngoninit et appelez Se désabonner Intérieur Ngondestroy Comme ceci: xxx
    1. à l'intérieur Ngoninit Utilisez le tuyau Tuste Taudytil de RXJS / opérateurs Comme ceci: xxx
      1. Utilisez async pipe comme ceci (dans ce cas, vous n'avez pas besoin de vous désabonner):

        TS: xxx

        html : {{Data $ | async | JSON}}

        Je préfère et recommander la deuxième cause One 'Parce que vous pouvez utiliser un sujet pour tous vos abonnements et la terminer à la fois. Bonne chance!


0 commentaires

1
votes

Si vous imprimez avec succès l'ID de Facebook sur cette ligne

import { Component, OnInit } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { ActivatedRoute } from '@angular/router';
import { MoviesService } from '../movies.service';

@Component({
  selector: 'app-movie',
  templateUrl: './movie.component.html',
  styleUrls: ['./movie.component.css']
})
export class MovieComponent implements OnInit {
  movie: Object;
  external_ids: Array<Object>;
  constructor(
    private _moviesServices: MoviesService,
    private router: ActivatedRoute      ) {

  }

  ngOnInit() {
    this.router.params.subscribe((params) => {
      const id = params['id'];
      this._moviesServices.getMovie(id).subscribe(movie => {
        this.movie = movie;
      });
      this._moviesServices.getExternalIds(id).subscribe((res: any) => {
        console.log(res.facebook_id);
        this.external_ids = res;
      });
    })
  }
}


1 commentaires

Je vous remercie! J'ai essayé cela mais semble ne pas fonctionner "Impossible de trouver un objet de support différent" [Objet d'objet] "de type" objet ". NGFOR ne prend en charge que la liaison à des ittérious telles que les tableaux."