He creado un componente secundario que tiene un método que quiero invocar.
Cuando invoco este método, solo activa la console.log()
línea, ¿no establecerá la test
propiedad?
A continuación se muestra la aplicación Angular de inicio rápido con mis cambios.
Padre
import { Component } from '@angular/core';
import { NotifyComponent } from './notify.component';
@Component({
selector: 'my-app',
template:
`
<button (click)="submit()">Call Child Component Method</button>
`
})
export class AppComponent {
private notify: NotifyComponent;
constructor() {
this.notify = new NotifyComponent();
}
submit(): void {
// execute child component method
notify.callMethod();
}
}
Niño
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'notify',
template: '<h3>Notify {{test}}</h3>'
})
export class NotifyComponent implements OnInit {
test:string;
constructor() { }
ngOnInit() { }
callMethod(): void {
console.log('successfully executed.');
this.test = 'Me';
}
}
¿Cómo puedo configurar la test
propiedad también?
angular
typescript
angular-components
Shammelburg
fuente
fuente
Respuestas:
Puede hacer esto usando
@ViewChild
para obtener más información, consulte este enlacecomponente hijo
componente padre
componente hijo
componente padre
fuente
Input
propiedades: un observable al que el niño reacciona llamando a su propia función interna. Ver la respuesta del usuario 6779899¡Esto funcionó para mí! Para Angular 2, llamar al método del componente secundario en el componente principal
Parent.component.ts
Child.component.ts
fuente
ChildComponent
porChildVM
Creo que la forma más sencilla es utilizar Subject. En el siguiente código de ejemplo, se notificará al niño cada vez que se llame a 'tellChild'.
Parent.component.ts
Parent.component.html
Child.component.ts
Muestra de trabajo en Stackblitz
fuente
Angular: llamar al método del componente secundario en la plantilla del componente principal
Tiene ParentComponent y ChildComponent que se ve así.
Cuando se sirve, se ve así:
Cuando el usuario se centra en el elemento de entrada de ParentComponent, desea llamar al método doSomething () de ChildComponent.
Simplemente haz esto:
fuente
@ViewChild('appChild', { static: false }) appChild: ElementRef<HTMLElement>;
y uso posteriorthis.appChild.doSomething()
La respuesta de user6779899 es ordenada y más genérica Sin embargo, según la solicitud de Imad El Hitti, aquí se propone una solución liviana. Esto se puede utilizar cuando un componente secundario está estrechamente conectado a un solo padre.
Parent.component.ts
Parent.component.html
Child.component.ts
fuente
Considere el siguiente ejemplo,
Lea más sobre @ViewChild aquí.
fuente
Tuve una situación exacta en la que el componente principal tenía un
Select
elemento en un formulario y, al enviarlo, necesitaba llamar al método del componente secundario correspondiente de acuerdo con el valor seleccionado del elemento de selección.Parent.HTML:
Padre.TS:
Niño.TS:
Espero que esto ayude.
fuente