2 votes

Angular 2 : passer un objet avec un objet imbriqué à un composant enfant

J'ai des objets imbriqués

data: {
  nestedData: {
    title: 'string'
  }
};

Je passe ces données au composant enfant via la propriété

<child-component [data]="data"></child-component>

Code du composant enfant :

import {Component, Input} from 'angular2/core';

@Component({
  selector: 'cp-header',
  template: '<div>{{ data.nestedData.nestedData }}</div>',
  styleUrls: ['app/header/header.component.css']
})
export class ChildComponent {
  @Input() data;
}

Ensuite, lorsque j'essaie d'accéder à la propriété de l'objet dans le modèle, j'obtiens une erreur ;

3voto

Celebes Points 420

Essayez d'utiliser l'opérateur elvis dans votre HTML : data?.nestedData?.title .

Vous devez également modifier @Input data a @Input() data .

0voto

Günter Zöchbauer Points 21340

Vous ne pouvez pas accéder aux entrées dans le constructeur. Elles sont définies juste avant ngOnInit s'appelle :

export class ChildComponent {
  @Input data;

  constructor() {
    console.log(this.data); // here it prints `null`
  }

  ngOnInit() {
    console.log(this.data); // here it prints the actual value
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X