Я новичок в Angular 7
(2+) и пробую свои силы на @Input
& @Output
.Однако передача данных от родительского к дочернему компоненту через @Input понятна и на месте.
Однако, с другой стороны, очень проста передача данных от дочернего к родительскому компоненту с использованием концепции @Output
, нореализация не получается.
Вот то, что я пытаюсь.При нажатии кнопки в дочернем компоненте свойство в родительском компоненте должно быть преобразовано в верхний регистр и отображено.
ChildComponent.ts
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
})
export class ChildComponent implements OnInit {
@Input('child-name') ChildName: string;
@Output() onHit: EventEmitter<string> = new EventEmitter<string>();
constructor() { }
ngOnInit() {}
handleClick(name): void {
this.onHit.emit(name);
}}
ChildComponent.html
<h1> child works! </h1>
<button (click)="handleClick('eventEmitter')"> Click me! </button>
ParentComponent.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
})
export class AppComponent {
title = 'my-dream-app';
customerName: string = "";
catchChildEvent(e) {
console.log(e);
}}
ParentComponent.html
<div style="text-align:center">
<app-child [child-name]="HelloChild"></app-child>
//Trying to bind to Custom event of child component here
<b (onHit)="catchChildEvent($event)">
<i> {{customerName}} </i>
</b>
Нет ошибок в консоли или привязке
Из вышеизложенногофрагмент, при нажатии кнопки в дочернем компоненте свойство родительского компонента CustomerName должно получить значение и отобразиться?
Пример: https://stackblitz.com/edit/angular-3vgorr