import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-parent',
templateUrl: './parent.component.html',
styleUrls: ['./parent.component.css']
})
export class ParentComponent implements OnInit {
contacts:any=[];
constructor() { }
ngOnInit() {
this.contacts=[
{title:'s',good:1},
{title:'ss',good:11},
{title:'sss',good:111},
{title:'ssss',good:1111}
];
}
childOutEvent(ev,i){
this.contacts[i].good += ev;
}
}
<p>
parent works!
</p>
<ul>
<li *ngFor="let contact of contacts;let i = index">
<app-child [contact]="contact" (OutEvent)="childOutEvent($event,i)" ></app-child>
</li>
</ul>
import { Component, OnInit,Input,Output,EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
@Input() contact:any={};
@Output() OutEvent = new EventEmitter<number>();
constructor() { }
ngOnInit() {
}
good_to_parent(num){
this.OutEvent.emit(num);
}
}
{{contact.title}} - {{contact.good}}
<button (click)="good_to_parent(1)" >good +1</button>
<button (click)="good_to_parent(-1)" >good -1</button>
https://angular.cn/docs/ts/latest/cookbook/component-communication.html#!#parent-to-child