forked from PatrickJS/PatrickJS-starter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.ts
125 lines (114 loc) · 3.55 KB
/
app.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*
* Angular 2 decorators and services
*/
import {Component, Inject} from 'angular2/core';
import * as ngCore from 'angular2/core';
import * as browser from 'angular2/platform/browser';
import {RouteConfig, Router, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, LocationStrategy, HashLocationStrategy, ROUTER_PRIMARY_COMPONENT} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
import {provideStore} from '@ngrx/store';
import {FORM_PROVIDERS} from 'angular2/common';
import {RouterActive} from './directives/router-active';
import {Home} from './home/home';
import {MyCounter} from './counter';
import {counter} from './reducers/counter';
require('style!css!ng2-material/dist/ng2-material.css');
require('style!css!ng2-material/dist/font.css');
import {MATERIAL_DIRECTIVES, MATERIAL_PROVIDERS} from "ng2-material/all";
/*
* App Environment Providers
* providers that only live in certain environment
*/
const ENV_PROVIDERS = [];
if ('production' === process.env.ENV) {
ngCore.enableProdMode();
ENV_PROVIDERS.push(browser.ELEMENT_PROBE_PROVIDERS_PROD_MODE);
} else {
ENV_PROVIDERS.push(browser.ELEMENT_PROBE_PROVIDERS);
}
/*
* App Component
* Top Level Component
*/
@Component({
selector: 'app',
providers: [
...ENV_PROVIDERS,
...HTTP_PROVIDERS,
...ROUTER_PROVIDERS,
ngCore.provide(ROUTER_PRIMARY_COMPONENT, {useValue: App}),
ngCore.provide(LocationStrategy, { useClass: HashLocationStrategy }),
provideStore({counter}, {counter: 0}),
...FORM_PROVIDERS
],
directives: [ ...ROUTER_DIRECTIVES, RouterActive ],
pipes: [],
styles: [`
nav ul {
display: inline;
list-style-type: none;
margin: 0;
padding: 0;
width: 60px;
}
nav li {
display: inline;
}
nav li.active {
background-color: lightgray;
}
`],
template: `
<header>
<nav>
<h1>Hello {{ name }}</h1>
<ul>
<li router-active>
<a [routerLink]=" ['Index'] ">Index</a>
</li>
<li router-active>
<a [routerLink]=" ['Home'] ">Home</a>
</li>
<li router-active>
<a [routerLink]=" ['About'] ">About</a>
</li>
<li router-active>
<a [routerLink]=" ['Counter'] ">Counter</a>
</li>
</ul>
</nav>
</header>
<main>
<router-outlet></router-outlet>
</main>
<footer>
WebPack Angular 2 Starter by <a [href]="url">@AngularClass</a>
<div>
<img [src]="angularclassLogo" width="10%">
</div>
</footer>
`
})
@RouteConfig([
{ path: '/', component: Home, name: 'Index' },
{ path: '/home', component: Home, name: 'Home' },
{ path: '/counter', component: MyCounter, name: 'Counter' },
// Async load a component using Webpack's require with es6-promise-loader and webpack `require`
{ path: '/about', loader: () => require('es6-promise!./about/about')('About'), name: 'About' },
{ path: '/**', redirectTo: ['Index'] }
])
export class App {
angularclassLogo = 'assets/img/angularclass-avatar.png';
name = 'Angular 2 Webpack Starter';
url = 'https://twitter.com/AngularClass';
constructor(@Inject('toastr') toastr:any) {
toastr.success('Yo!');
}
}
/*
* Please review the https://github.com/AngularClass/angular2-examples/ repo for
* more angular app examples that you may copy/paste
* (The examples may not be updated as quickly. Please open an issue on github for us to update it)
* For help or questions please contact us at @AngularClass on twitter
* or our chat on Slack at https://AngularClass.com/slack-join
*/