<!DOCTYPE html>
<html>
<head>
<title>angular2 playground</title>
<link rel="stylesheet" href="style.css" />
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/tools/system.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="config.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2.min.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/http.min.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.0/router.dev.js"></script>
<script>
System.import('app')
.catch(console.error.bind(console));
</script>
</head>
<body>
<base href="/">
<my-app>
loading...
</my-app>
</body>
</html>
/* Styles go here */
### Angular2 Starter Plunker - Typescript - Beta 0
A simple plunker demonstrating Angular2 usage:
- Uses SystemJS + TypeScript to compile on the fly
- Includes binding, directives, http, pipes, and DI usage.
System.config({
//use typescript for compilation
transpiler: 'typescript',
//typescript compiler options
typescriptOptions: {
emitDecoratorMetadata: true
},
//map tells the System loader where to look for things
map: {
app: "./src"
},
//packages defines our app package
packages: {
app: {
main: './main.ts',
defaultExtension: 'ts'
}
}
});
import {bootstrap} from 'angular2/platform/browser'
import {AppComponent} from './app.component'
import {ROUTER_PROVIDERS} from 'angular2/router';
import 'rxjs/Rx';
bootstrap(AppComponent, [
ROUTER_PROVIDERS
]);
import {Component} from 'angular2/core';
import {NavigationComponent} from './navigation.component'
import {PageComponent} from './page.component'
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
@Component({
selector: 'my-app',
template: `<h1>My First Angular 2 App</h1>
<navigation></navigation>
<router-outlet></router-outlet>
`,
directives: [NavigationComponent, ROUTER_DIRECTIVES]
})
@RouteConfig([
{path:'/page/:id', name: 'Page', component: PageComponent}
])
export class AppComponent { }
import {Component, OnInit} from 'angular2/core';
import {MenuItem} from './menuitem.model';
import {HTTP_PROVIDERS} from 'angular2/http';
import {Router} from 'angular2/router';
@Component({
selector: 'navigation',
template: `
<h3>Navigation:</h3>
<ul>
<li *ngFor="#menuItem of menuItems" (click)="onSelect(menuItem)">
{{ menuItem.title }}
<ul>
<li *ngFor="#menuChildrenItem of menuItem.children">
{{ menuChildrenItem.title }}
</li>
</ul>
</li>
</ul>
`,
providers: [HTTP_PROVIDERS]
})
export class NavigationComponent implements OnInit {
constructor (
private router: Router) {
}
errorMessage: string;
menuItems : MenuItem[];
ngOnInit() {
this.menuItems = [];
var test = {} as MenuItem;
test.id = 10;
test.title = "test";
test.object_id = 10;
test.type_label = "page";
this.menuItems.push(test);
}
onSelect(menuItem : MenuItem) {
this.router.navigate(['Page', { id: 10 }]);
}
}
import {Component, OnInit} from 'angular2/core';
import {RouteParams, Router} from 'angular2/router';
import {Page} from './page.model';
import {HTTP_PROVIDERS} from 'angular2/http';
@Component({
template: `
<h2>Page: {{ page }}</h2>
<h3>test page</h3>
`,
providers: [HTTP_PROVIDERS]
})
export class PageComponent implements OnInit {
page : Page;
errorMessage: string;
constructor (
) {
}
ngOnInit(){
this.page = new Page(10);
}
}
export interface MenuItem {
id: number,
title: string,
parent: number,
url: string,
type_label: string,
object_id: number,
children: MenuItem;
}
export class Page {
id : number;
constructor(json: any){
this.id = json.id;
}
}