<!DOCTYPE html>
<html>
<head>
<title>Subscriby Not Worky</title>
<link rel="stylesheet" href="style.css" />
<script src="https://npmcdn.com/zone.js@0.6.12/dist/zone.js"></script>
<script src="https://npmcdn.com/reflect-metadata@0.1.3/Reflect.js"></script>
<script src="https://npmcdn.com/systemjs@0.19.31/dist/system.js"></script>
<script src="https://npmcdn.com/typescript@1.8.10/lib/typescript.js"></script>
<script src="config.js"></script>
<script>
System.import('app')
.catch(console.error.bind(console));
</script>
</head>
<body>
<my-app>
loading...
</my-app>
</body>
</html>
/* Styles go here */
### Angular2 Starter Plunker - Typescript - RC.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' : 'app',
'@angular': 'https://npmcdn.com/@angular',
'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6'
},
//packages defines our app package
packages: {
'app' : {main: 'app.ts', defaultExtension: 'ts'},
'@angular/core': {
main: 'bundles/core.umd.js',
defaultExtension: 'js'
},
'@angular/compiler': {
main: 'bundles/compiler.umd.js',
defaultExtension: 'js'
},
'@angular/common': {
main: 'bundles/common.umd.js',
defaultExtension: 'js'
},
'@angular/platform-browser-dynamic': {
main: 'bundles/platform-browser-dynamic.umd.js',
defaultExtension: 'js'
},
'@angular/platform-browser': {
main: 'bundles/platform-browser.umd.js',
defaultExtension: 'js'
},
'@angular/router': {
main: 'bundles/router.umd.js',
defaultExtension: 'js'
},
'@angular/http': {
main: 'bundles/http.umd.js',
defaultExtension: 'js'
},
rxjs: {
defaultExtension: 'js'
}
}
});
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs/Observer';
@Injectable()
export default class Chatter {
private clients: Observer<string>[] = [];
private messageSender : Observable<string>;
constructor() {
this.messageSender = Observable.create(observer => this.clients.push(observer));
}
public listenForMessages() : any {
console.log("Listen Requested...")
return this.messageSender;
}
}
import { Component, provide } from "@angular/core";
import {LocationStrategy, HashLocationStrategy} from '@angular/common';
import {bootstrap} from "@angular/platform-browser-dynamic";
import { ROUTER_DIRECTIVES, RouterConfig, provideRouter, Router } from '@angular/router';
import {HTTP_PROVIDERS} from '@angular/http';
import 'rxjs/Rx';
import { LoginPage } from './login/login';
import { DefaultPage } from './default/default';
import Chatter from './chatter/service';
@Component({
selector: "my-app",
templateUrl: "./app/app.html",
directives : [ROUTER_DIRECTIVES, LoginPage, DefaultPage]
})
export class AppComponent {
router: Router;
location: Location;
constructor(router: Router) {
this.router = router;
this.location = location;
}
}
const clientRoutes : RouterConfig = [
{ path: "", component: LoginPage},
{ path: "talk", component: DefaultPage}
]
const ROUTES = [
provideRouter(clientRoutes)
];
bootstrap(AppComponent,
[ HTTP_PROVIDERS,
ROUTES,
{ provide: LocationStrategy, useClass: HashLocationStrategy },
provide(Chatter, { useClass : Chatter })
]
);
<router-outlet></router-outlet>
import {Component} from "@angular/core";
import {Router} from "@angular/router";
import Chatter from "../chatter/service";
@Component({
selector: 'login',
templateUrl: 'app/login/login.html'
})
export class LoginPage {
code: string;
constructor( private router : Router, private chatter : Chatter ) { }
ngOnInit() {
if (!this.chatter) return console.error("Chatter not passed in");
this.chatter.listenForMessages().subscribe(m => console.log(m));
}
newChat() {
this.router.navigate(["/talk"]);
}
joinChat() {
this.router.navigate(["/talk"]);
}
}
<p><button (click)="newChat()">New Chat</button>
<p><input [(ngModel)]="code" placeholder="Chat Key"><button (click)="joinChat()">Join Chat</button>
import {Component} from "@angular/core";
import Chatter from "../chatter/service";
@Component({
selector: 'default',
templateUrl: 'app/default/default.html'
})
export class DefaultPage {
constructor(private chatter : Chatter) { }
ngOnInit() {
this.initChatter();
}
initChatter() {
this.chatter.listenForMessages().subscribe(event => {console.log(event); },
error => { console.log(error)});
}
}
<p>Placeholder</p>
<form action="">
<input [(ngModel)]="chatBox" autocomplete="off" /><button>Send</button>
</form>