Я новичок в angular. У меня есть два компонента, один из которых родительский, а другой дочерний. Родительский компонент имеет Modal. Дочерний компонент - это форма, которая открыта в Modal родительского компонента. Теперь я хотел бы узнать, как я могу отправить форму дочернего компонента при нажатии на кнопку OK в Modal родительского компонента.

Ответы (1)

Каждый раз, когда вы хотите обработать действие в дочернем компоненте из родительского компонента, например, submit, у вас есть два варианта: создать сервис и подписаться на свойство actionStatus

export class CtrlActionService {
  private actionStatus = new Subject();

  constructor() {}

  //ctrl submit action
  public callAction() {
    this.actionStatus.next(true);
  }
  public getAction(): Observable {
    return this.actionStatus.asObservable();
  }
}

parent.component.ts

onClickOkButton() {
  this.ctrlActionService.callAction()
}

child.component.ts

ngOnInit() {
  this.ctrlActionService.getAction().subscribe(r => {
    if (r) {
      // your code
    }
  })
}

////////////////////////////////////////////////

или можно сделать по-другому, вызывая метод дочернего компонента из родительского компонента путем создания ViewChild

parent.component.html


parent.component.ts

@ViewChild('childComponent') childComponent: childComponent;
onClickOkButton() {
  this.childComponent.doAction();
}

child.component.ts

doAction() {
      // your code
}

Я знаю только эти два способа и надеюсь, что они будут полезны для вас

2022 WebDevInsider