<!DOCTYPE html>
<html>
  <head>
    <title>Angular 2 Component - Inputs</title>
    <!-- 1. Load libraries -->
    <script src="https://unpkg.com/systemjs@0.19.38/dist/system.src.js"></script>
    <script src="https://code.angularjs.org/tools/typescript.js"></script>
    <script src="system.config.js"></script>

  </head>

  <!-- 3. Display the application -->
  <body>
    <rio-app>Loading...</rio-app>
    
    <script>
      System.import('main');
    </script>
  </body>

</html>
var angularVersion = '2.0.0';

System.config({
  baseUrl: '/',
  paths: {
    'unpkg:*': 'https://unpkg.com/*'
  }
});

System.config({
  transpiler: 'typescript', 
  typescriptOptions: { emitDecoratorMetadata: true },

  meta: {
    '*': {
      deps: [ 'zone.js', 'reflect-metadata' ]
    }
  }
});

System.config({
  packageConfigPaths: [
    "unpkg:@*/*/package.json"
  ],
  
  map: {
    '@angular/core': 'unpkg:@angular/core@'+angularVersion,
    '@angular/forms': 'unpkg:@angular/forms@'+angularVersion,
    '@angular/compiler': 'unpkg:@angular/compiler@'+angularVersion,
    '@angular/common': 'unpkg:@angular/common@'+angularVersion,
    '@angular/platform-browser': 'unpkg:@angular/platform-browser@'+angularVersion,
    '@angular/platform-browser-dynamic': 'unpkg:@angular/platform-browser-dynamic@'+angularVersion,
    'rxjs': 'unpkg:rxjs@5.0.0-beta.12',
    'zone.js': 'unpkg:zone.js@0.6.25',
    'reflect-metadata': 'unpkg:reflect-metadata@0.1.3',
    "crypto": "@empty",
    "main": "main.ts"
  },
  
  packages: {
    'app': {
      defaultExtension: 'ts'
    }
  }
});
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';

platformBrowserDynamic().bootstrapModule(AppModule);
import { Component } from '@angular/core';

@Component({
  selector: 'rio-app',
  templateUrl: 'app/app.component.html'
})
export class AppComponent {
  helloName: string;

  constructor() {
    this.helloName = 'Angular2';
  }
}
import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'rio-hello',
  template: `
  <input [(ngModel)]="name" (ngModelChange)="nameChange.emit($event)">
  <p>{{name}}</p>
  `,
})
export class HelloComponent {
  @Input() name: string;
  @Output()
  nameChange:EventEmitter<string> = new EventEmitter();
}
<div>
  <p>Hello {{helloName}}, outside</p>
  <rio-hello [(name)]="helloName"></rio-hello>
</div>
import { NgModule } '@angular/core';
import { BrowserModule }  from '@angular/platform-browser';
import { FormsModule }   from '@angular/forms';

import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';

@NgModule({
  imports: [BrowserModule, FormsModule],
  declarations: [
    AppComponent,
    HelloComponent
  ],
  exports: [AppComponent],
  bootstrap: [AppComponent]
})
export class AppModule {
}