Angular 2 - como passar dados para um componente filho sem renderizar o componente filho duas vezes?

Marius B

Quero passar um objeto de app.component para um componente filho (home.component). Estou usando o roteamento da maneira errada e é por isso que o componente filho para o qual desejo passar o objeto está sendo renderizado duas vezes? Como posso evitar isso? Acho que essa também pode ser a razão pela qual esse objeto é indefinido na segunda vez que o componente é renderizado.

Estou pesquisando no Google há vários dias e nada parece funcionar. Eu estava seguindo um tutorial em vídeo, mas era baseado no Angular 2 RC3 ou anterior, eu acho. Estou usando o Angular 2.1.1

Se eu remover a linha abaixo, o componente filho será gerado apenas uma vez. Mas então não posso passar o objeto para ele.

 <app-home [testdata]="testdata"></app-home>

Aqui está o código:

app.component.ts:

import { Component, Output } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css']
})
export class AppComponent {
  title = 'Welcome';
  testdata = {
    somedata: 'Here is the data'
  };
}

app.component.html:

<header>
  <h1>
    {{title}}
  </h1>
  <nav>
    <ul>
      <li><a routerLink="/" routerLinkActive="active">Home</a></li>
      <li><a routerLink="/directory">Directory</a></li>
    </ul>
  </nav>
</header>
<section id="main">
  <app-home [testdata]="testdata"></app-home>
  <router-outlet></router-outlet>
</section>

home.component.ts:

import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-home',
  templateUrl: 'home.component.html',
  styleUrls: ['home.component.css']
})
export class HomeComponent implements OnInit {
  homeTitle = "Welcome to the homepage";
  @Input() testdata: any;

  constructor() {
  }

  ngOnInit() {
  }

}

app.routes.ts:

import { Routes, RouterModule } from "@angular/router";
import { DirectoryComponent } from "./directory/directory.component";
import { HomeComponent } from "./home/home.component";

const APP_ROUTES = [
  { path: '', component: HomeComponent }
];

export const APP_ROUTES_PROVIDER = RouterModule.forRoot(APP_ROUTES);

main.ts:

import './polyfills.ts';

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/';
import { APP_ROUTES_PROVIDER } from './app/app.routes';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule, [APP_ROUTES_PROVIDER]);
Yurzui

Esse é um problema conhecido

A vinculação atualmente simplesmente não funciona com componentes adicionados dinamicamente. Mas você pode passar dados imperativamente como:

app.component.html

<router-outlet (activate)="activated($event)"></router-outlet>

app.component.ts

activated(comp: any) {
  if(comp instanceof HomeComponent) {
    comp.testdata = this.testdata;
  }
}

Exemplo de êmbolo

Isso também pode estar relacionado

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como passar dados do componente filho para o pai [Angular]

Como passar dados do componente angular filho para o pai

Como passar um modelo personalizado (html) para o componente filho via componente pai no angular 2?

Angular 2: como passar atributos para o componente filho?

Como passar dados para o componente de atributo Angular 2 aninhado (filho)

como passar duas funções para o componente filho

Como passar adereços de um componente filho para outro componente filho usando o componente pai

Como passar adereços de um componente filho para outro componente filho usando o componente pai

Como passar dados do componente filho para o componente pai no Angular4

Tentando atualizar o componente filho 1 com dados do componente filho 2 sem renderizar novamente o filho 2

Como passar um parâmetro opcional para cada filho ao renderizar o componente?

Passar dados do componente filho para o componente pai Angular2

Como passar dados para o componente filho dos vuejs pais

Como passar dados únicos do componente filho para o pai?

Como faço para passar dados assíncronos de um controlador pai para um componente filho?

Como posso passar os objetos do componente Pai para o componente Filho no Angular 2?

Como passar o valor de entrada do componente pai para o filho sem usar ng no angular?

Como passar nextProps para o componente filho

Como passar dados assíncronos como uma matriz de objetos para o componente filho - angular 6

Como passar dados do componente pai para o filho no Angular 4

Como passar vários dados do componente filho para o pai no Angular?

Como passar dados do componente filho (o filho tem seu próprio estado) para o pai?

Como posso passar dados de um componente pai para um componente filho no Vue.js?

Como passar dados de um componente filho para um componente pai em React.js

Como passar um adereço para um componente filho no clique - Vue2

Como passar dados de filho para pai, se o componente dinâmico for filho

Como gerar dados para o componente filho?

Angular ExpressionChangedAfterItHasBeenCheckedError ao passar dados do componente pai para o componente filho usando o mapa

Componente filho Angular2 como dados

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo