Я создал дочерний компонент, у которого есть метод, который я хочу вызвать.
Когда я вызываю этот метод, он только запускает console.log()
строку, он не устанавливает test
свойство ??
Ниже приведено приложение Angular для быстрого старта с моими изменениями.
родитель
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();
}
}
ребенок
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';
}
}
Как я могу также установить test
свойство?
angular
typescript
angular-components
shammelburg
источник
источник
Ответы:
Вы можете сделать это, используя
@ViewChild
для получения дополнительной информации эту ссылкудочерний компонент
родительский компонент
дочерний компонент
родительский компонент
источник
Input
свойств: наблюдаемого, на которое дочерний элемент реагирует, вызывая свою собственную внутреннюю функцию. См. Ответ user6779899Это сработало для меня! Для Angular 2 вызовите метод дочернего компонента в родительском компоненте
Parent.component.ts
Child.component.ts
источник
ChildComponent
поChildVM
Я думаю, что самый простой способ - это использовать тему. В приведенном ниже примере кода ребенок будет уведомляться каждый раз, когда вызывается tellChild.
Parent.component.ts
Parent.component.html
Child.component.ts
Рабочий образец на Stackblitz
источник
Angular - вызов метода дочернего компонента в шаблоне родительского компонента
У вас есть ParentComponent и ChildComponent, которые выглядят следующим образом.
При подаче это выглядит так:
Когда пользователь фокусируется на элементе ввода ParentComponent, вы хотите вызвать метод doSomething () ChildComponent.
Просто сделайте это:
источник
@ViewChild('appChild', { static: false }) appChild: ElementRef<HTMLElement>;
и для последующего использованияthis.appChild.doSomething()
Ответ user6779899 изящный и более общий. Однако, по запросу Имада Эль Хитти, здесь предлагается облегченное решение. Это можно использовать, когда дочерний компонент тесно связан только с одним родителем.
Parent.component.ts
Parent.component.html
Child.component.ts
источник
Рассмотрим следующий пример,
Подробнее о @ViewChild здесь.
источник
У меня была точная ситуация, когда родительский компонент имел
Select
элемент в форме, и при отправке мне нужно было вызвать соответствующий метод дочернего компонента в соответствии с выбранным значением из элемента select.Parent.HTML:
Parent.TS:
Child.TS:
Надеюсь это поможет.
источник