J'ai créé un composant enfant qui a une méthode que je souhaite appeler.
Lorsque j'invoque cette méthode, il ne déclenche que la console.log()
ligne, il ne définira pas la test
propriété ??
Vous trouverez ci-dessous l'application Angular de démarrage rapide avec mes modifications.
Parent
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();
}
}
Enfant
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';
}
}
Comment puis-je définir la test
propriété également?
angular
typescript
angular-components
Shammelburg
la source
la source
Réponses:
Vous pouvez le faire en utilisant
@ViewChild
pour plus d'informations, consultez ce liencomposant enfant
composant parent
composant enfant
composant parent
la source
Input
propriétés: une observable à laquelle l'enfant réagit en appelant sa propre fonction interne. Voir la réponse de user6779899Cela a fonctionné pour moi! Pour Angular 2, appelez la méthode du composant enfant dans le composant parent
Parent.component.ts
Child.component.ts
la source
ChildComponent
parChildVM
Je pense que le moyen le plus simple est d'utiliser Subject. Dans l'exemple de code ci-dessous, l'enfant sera averti chaque fois que 'tellChild' est appelé.
Parent.component.ts
Parent.component.html
Child.component.ts
Échantillon de travail sur Stackblitz
la source
Angular - Appeler la méthode du composant enfant dans le modèle du composant parent
Vous avez ParentComponent et ChildComponent qui ressemble à ceci.
Au service, cela ressemble à ceci:
Lorsque l'utilisateur se concentre sur l'élément d'entrée de ParentComponent, vous souhaitez appeler la méthode doSomething () de ChildComponent.
Faites simplement ceci:
la source
@ViewChild('appChild', { static: false }) appChild: ElementRef<HTMLElement>;
et une utilisation ultérieurethis.appChild.doSomething()
La réponse de user6779899 est nette et plus générique Cependant, sur la base de la demande d'Imad El Hitti, une solution légère est proposée ici. Cela peut être utilisé lorsqu'un composant enfant est étroitement connecté à un seul parent.
Parent.component.ts
Parent.component.html
Child.component.ts
la source
Prenons l'exemple suivant,
En savoir plus sur @ViewChild ici.
la source
J'avais une situation exacte où le composant Parent avait un
Select
élément dans un formulaire et lors de la soumission, je devais appeler la méthode du composant enfant correspondant en fonction de la valeur sélectionnée à partir de l'élément de sélection.Parent.HTML:
Parent.TS:
Enfant.TS:
J'espère que cela t'aides.
la source