Utworzyłem komponent potomny, który ma metodę, którą chcę wywołać.
Kiedy wywołuję tę metodę, to tylko odpala console.log()
linię, nie ustawi test
właściwości ??
Poniżej znajduje się szybki start aplikacji Angular z moimi zmianami.
Rodzic
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();
}
}
Dziecko
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';
}
}
Jak mogę również ustawić test
właściwość?
angular
typescript
angular-components
shammelburg
źródło
źródło
Odpowiedzi:
Możesz to zrobić, używając,
@ViewChild
aby uzyskać więcej informacji, sprawdź ten linkskładnik podrzędny
składnik macierzysty
składnik podrzędny
składnik macierzysty
źródło
Input
właściwości: obserwowalnych, na które dziecko reaguje, wywołując własną funkcję wewnętrzną. Zobacz odpowiedź użytkownika6779899To zadziałało dla mnie! Dla Angular 2, wywołaj metodę komponentu potomnego w komponencie nadrzędnym
Parent.component.ts
Child.component.ts
źródło
ChildComponent
przezChildVM
Myślę, że najłatwiejszym sposobem jest użycie tematu. W poniższym kodzie przykładowym dziecko zostanie powiadomione za każdym razem, gdy zostanie wywołane polecenie „tellChild”.
Parent.component.ts
Parent.component.html
Child.component.ts
Próbka robocza na Stackblitz
źródło
Angular - Wywołaj metodę komponentu podrzędnego w szablonie komponentu nadrzędnego
Masz ParentComponent i ChildComponent, które wyglądają tak.
Podczas serwowania wygląda to tak:
Gdy użytkownik koncentruje się na elemencie wejściowym ParentComponent, chcesz wywołać metodę doSomething () klasy ChildComponent.
Po prostu zrób to:
źródło
@ViewChild('appChild', { static: false }) appChild: ElementRef<HTMLElement>;
i później do użytkuthis.appChild.doSomething()
Odpowiedź użytkownika6779899 jest zgrabna i bardziej ogólna Jednak w oparciu o prośbę Imada El Hitti zaproponowano tutaj lekkie rozwiązanie. Można tego użyć, gdy komponent podrzędny jest ściśle połączony tylko z jednym rodzicem.
Parent.component.ts
Parent.component.html
Child.component.ts
źródło
Rozważmy następujący przykład:
Przeczytaj więcej o @ViewChild tutaj.
źródło
Miałem dokładną sytuację, w której komponent nadrzędny miał
Select
element w formularzu i po przesłaniu musiałem wywołać odpowiednią metodę komponentu Child-Component zgodnie z wybraną wartością z elementu select.Parent.HTML:
Parent.TS:
Dziecko. TS:
Mam nadzieję że to pomoże.
źródło