pasar parametros entre comunicacion componentes change angular typescript

comunicacion - pasar parametros entre componentes angular 2



Angular 2+ llama a una funciĆ³n en un componente secundario desde su componente principal (2)

Me gustaría saber la mejor manera de hacerlo, y si hay diferentes maneras. Estoy intentando llamar a una función en un componente secundario desde su componente principal. Así que si tengo:

<parent> <child></child> </parent>

... y el child tiene funciones llamadas show() u hide() , ¿cómo puedo llamar a cualquiera de los parent ?


Dentro de su plantilla:

<parent (click)="yourChild.hide()"> <child #yourChild></child> </parent>

Dentro de su componente (opción 1):

import { ..., ViewChild, ... } from ''@angular/core''; // ... export class ParentComponent { @ViewChild(''yourChild'') child; ngAfterViewInit() { console.log(''only after THIS EVENT "child" is usable!!''); this.child.hide(); } }

Dentro de su componente (opción 2):

import { ..., ViewChild, ... } from ''@angular/core''; import { ..., ChildComponent, ... } from ''....''; // ... export class ParentComponent { @ViewChild(ChildComponent) child; ngAfterViewInit() { console.log(''only after THIS EVENT "child" is usable!!''); this.child.hide(); } }

Consulte los documentos oficiales: https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-to-view-child

demoledor de demostración en vivo: https://plnkr.co/edit/fEYwlKlkMbPdfx9IGXGR?p=preview


Para llamar a una función de un niño, necesitará @ViewChild . Sin embargo, para mostrar / ocultar un componente, es mejor resolver esto dentro de la plantilla:

<parent> <button (click)="showChild=!showChild">Toggle child</button> <child *ngIf="showChild"></child> </parent>

No es necesario declarar una función personalizada hide() .