Eu criei um componente filho que possui um método que eu quero chamar.
Quando invoco esse método, ele dispara apenas a console.log()
linha, não define otest
propriedade ??
Abaixo está o aplicativo Angular de início rápido com minhas alterações.
Pai
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();
}
}
Criança
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';
}
}
Como posso definir a test
propriedade também?
angular
typescript
angular-components
Shammelburg
fonte
fonte
Respostas:
Você pode fazer isso usando,
@ViewChild
para obter mais informações, consulte este linkcomponente filho
componente pai
componente filho
componente pai
fonte
Input
propriedades: um observável ao qual a criança reage chamando sua própria função interna. Veja a resposta de user6779899Isso funcionou para mim! Para Angular 2, chame o método do componente filho no componente pai
Parent.component.ts
Child.component.ts
fonte
ChildComponent
porChildVM
Eu acho que a maneira mais fácil é usar o Subject. No código de exemplo abaixo, o filho será notificado toda vez que 'tellChild' for chamado.
Parent.component.ts
Parent.component.html
Child.component.ts
Amostra de trabalho no Stackblitz
fonte
Angular - Chame o método do componente filho no modelo do componente pai
Você tem ParentComponent e ChildComponent que se parecem com isso.
Quando servir, fica assim:
Quando o usuário se concentrar no elemento de entrada ParentComponent, você deseja chamar o método doSomething () de ChildComponent.
Simplesmente faça o seguinte:
fonte
@ViewChild('appChild', { static: false }) appChild: ElementRef<HTMLElement>;
e uso posteriorthis.appChild.doSomething()
A resposta do usuário6779899 é clara e genérica. No entanto, com base na solicitação de Imad El Hitti, uma solução leve é proposta aqui. Isso pode ser usado quando um componente filho está firmemente conectado a apenas um pai.
Parent.component.ts
Parent.component.html
Child.component.ts
fonte
Considere o seguinte exemplo,
Leia mais sobre o @ViewChild aqui.
fonte
Eu tive uma situação exata em que o componente pai tinha um
Select
elemento em um formulário e, ao enviar, precisava chamar o método do componente filho relevante de acordo com o valor selecionado no elemento select.Parent.HTML:
Parent.TS:
Child.TS:
Espero que isto ajude.
fonte