<!DOCTYPE html>
<html>
<head>
<title>angular2 playground</title>
<link data-require="bootstrap-css@3.3.6" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<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>
System.import('app')
.catch(console.error.bind(console));
</script>
</head>
<body>
<my-app>
loading...
</my-app>
</body>
</html>
/* Styles go here */
.someclass{
color:red;
}
### 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'
}
}
});
//main entry point
import {bootstrap} from 'angular2/platform/browser';
import {App} from './app';
bootstrap(App, [])
.catch(err => console.error(err));
//our root app component
import {Component} from 'angular2/core'
import {Collapse} from 'src/collapse'
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<h2 (click)="isCollapsed = !isCollapsed">click here</h2>
<div [collapse]="isCollapsed" >
<div class="well">
panel panel panel
</div>
</div>
</div>
`,
directives: [Collapse]
})
export class App {
constructor() {
this.name = 'Angular2'
}
}
import {Directive, Input, HostBinding, ElementRef} from 'angular2/core'
@Directive({selector: '[collapse]'})
export class Collapse {
@HostBinding('class.collapsing')
private isCollapsing:boolean
// style
@HostBinding('style.height')
private height:string;
@Input()
private set collapse(value:boolean) {
if(value!==undefined){
if(value){
this.hide();
}else {
this.show();
}
}
//
}
constructor(public el: ElementRef) {
this.measureHeight();
}
measureHeight() {
let elem = this.el.nativeElement;
//lets be sure the element has display:block style
elem.className = elem.className.replace('collapse', '');
this.h = elem.scrollHeight;
}
hide(){
this.height = this.h +'px'
setTimeout(() => {
this.height = '0px';
this.isCollapsing = true;//apply 'collapsing' class
},1);
}
show() {
this.height = '0px'
setTimeout(() => {
this.height = this.h + 'px';
this.isCollapsing = true;//apply 'collapsing' class
},1);
}
}