Input , , , . this.appData ( ). appData . , , . ;)
, changed component Output [(appData)]="data" ( EventEmitter ).
AppComponent
<app-header [appData]="data" ></app-header>
<list-todo [(appData)]="data"></list-todo>
ListTodoComponent
@Component({
selector: 'list-todo',
template: `
<ul>
<li *ngFor="let item of appData">{{item}}</li>
</ul>
<button (click)="clear()">Clear</button>
`
})
export class ListTodoComponent {
@Input() appData;
@Output() appDataChange: EventEmitter<any> = new EventEmitter<any>();
clear(){
this.appData = [];
//this emit is important to send data back to parent.
//make sure you should have `Change` prefix to bounded value, like `appData` + `Change` = `appDataChange`,
//which ultimately saves few lines of code.
this.appDataChange.emit(this.appData);
}
}