Below example has both parent to child binding and child to parent binding.
- Parent to child binding is done by property binding where master string is passed to child component by the custom property named childToMaster using @Input.
- Child to parent binding is done by event binding using @Output. See childToMaster event.
Working demo
Parent component
import { Component, Output,EventEmitter } from '@angular/core';
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  //passing values from parent to child
  master : String="send from parent";
  //Getting value from child
  childToParent(name){
    this.master=name;
  }
}
Parent Template
<div>
  <span>Master to Child </span><input type="textbox" [(ngModel)]='master'>
</div>
<app-child [childToMaster]=master (childToParent)="childToParent($event)">
</app-child>
Child Component with template
import { Component, Input, Output,EventEmitter } from '@angular/core';
@Component({
  selector: 'app-child',
  template: `
    <input type="textbox" [(ngModel)]='masterName'> 
    <button (click)="sendToParent(masterName)" >sendToParent</button>
    <div>{{masterName}}</div>
  `
})
export class AppChildComponent {
  //getting value from parent to child
  @Input('childToMaster') masterName: string;
  @Output() childToParent = new EventEmitter<String>();
  sendToParent(name){
    //alert("hello");
    this.childToParent.emit(name);
  }
}