diff --git a/README.md b/README.md
index 2ee11b04d9..5e1c55b7bd 100644
--- a/README.md
+++ b/README.md
@@ -98,9 +98,14 @@ Also, open any `plunkr.no-link.html` to see the code execute in plunker
### Sample end-to-end tests
-All samples should be covered to some degree by end-to-end tests.
+All samples should be covered to some degree by end-to-end tests:
+- `gulp run-e2e-tests` to run all TypeScript and JavaScript tests
+- `gulp run-e2e-tests --lang=dart` to run all Dart tests
+- `gulp run-e2e-tests --lang=all` to run TypeScript, JavaScript, and Dart tests
+- `gulp run-e2e-tests --filter=quickstart` to filter the examples to run, by name
+- `gulp run-e2e-tests --fast` to ignore npm install, webdriver update and boilerplate copy
-Run them yourself: `gulp run-e2e-tests`.
+Any combination of options is possible.
## Technology Used
diff --git a/public/docs/_examples/cb-dependency-injection/e2e-spec.js b/public/docs/_examples/cb-dependency-injection/e2e-spec.js
index aeb0e68b17..14f1f0994b 100644
--- a/public/docs/_examples/cb-dependency-injection/e2e-spec.js
+++ b/public/docs/_examples/cb-dependency-injection/e2e-spec.js
@@ -34,11 +34,16 @@ describe('Dependency Injection Cookbook', function () {
expect(sortedHero).toBeDefined();
});
- it('should render Hero of the Month', function () {
+ it('should render Hero of the Month when DI deps are defined using provide()', function () {
var heroOfTheMonth = element.all(by.xpath('//h3[text()="Hero of the month"]')).get(0);
expect(heroOfTheMonth).toBeDefined();
});
+ it('should render Hero of the Month when DI deps are defined using provide object literal', function () {
+ var heroOfTheMonth = element.all(by.xpath('//h3[text()="Hero of the month 2"]')).get(0);
+ expect(heroOfTheMonth).toBeDefined();
+ });
+
it('should render Hero Bios', function () {
var heroBios = element.all(by.xpath('//h3[text()="Hero Bios"]')).get(0);
expect(heroBios).toBeDefined();
@@ -54,8 +59,13 @@ describe('Dependency Injection Cookbook', function () {
expect(magmaPhone).toBeDefined();
});
- it('should render Hero-of-the-Month runner-ups', function () {
- var runnersUp = element(by.id('rups')).getText();
+ it('should render Hero-of-the-Month runner-ups when DI deps are defined using provide()', function () {
+ var runnersUp = element(by.id('rups1')).getText();
+ expect(runnersUp).toContain('RubberMan, Mr. Nice');
+ });
+
+ it('should render Hero-of-the-Month runner-ups when DI deps are defined using provide object literal', function () {
+ var runnersUp = element(by.id('rups2')).getText();
expect(runnersUp).toContain('RubberMan, Mr. Nice');
});
diff --git a/public/docs/_examples/cb-dependency-injection/ts/app/app.component.html b/public/docs/_examples/cb-dependency-injection/ts/app/app.component.html
index c27281f2af..0e1d15932d 100644
--- a/public/docs/_examples/cb-dependency-injection/ts/app/app.component.html
+++ b/public/docs/_examples/cb-dependency-injection/ts/app/app.component.html
@@ -23,6 +23,9 @@
+
diff --git a/public/docs/_examples/dependency-injection/e2e-spec.js b/public/docs/_examples/dependency-injection/e2e-spec.js
index 819b8b0008..effdc1111f 100644
--- a/public/docs/_examples/dependency-injection/e2e-spec.js
+++ b/public/docs/_examples/dependency-injection/e2e-spec.js
@@ -88,6 +88,11 @@ describe('Dependency Injection Tests', function () {
expectedMsg = 'Hello from logger provided with useClass';
expect(element(by.css('#p3')).getText()).toEqual(expectedMsg);
});
+
+ it('P3a (provide) displays as expected', function () {
+ expectedMsg = 'Hello from logger provided with {provide: Logger, useClass: Logger}';
+ expect(element(by.css('#p3a')).getText()).toEqual(expectedMsg);
+ });
it('P4 (useClass:BetterLogger) displays as expected', function () {
expectedMsg = 'Hello from logger provided with useClass:BetterLogger';
diff --git a/public/docs/_examples/dependency-injection/ts/app/providers.component.ts b/public/docs/_examples/dependency-injection/ts/app/providers.component.ts
index e0426ae9d0..cd718c4c04 100644
--- a/public/docs/_examples/dependency-injection/ts/app/providers.component.ts
+++ b/public/docs/_examples/dependency-injection/ts/app/providers.component.ts
@@ -1,6 +1,7 @@
+/* tslint:disable:one-line:check-open-brace*/
// Examples of provider arrays
-//#docplaster
-import { Component, Host, Inject, Injectable,
+// #docplaster
+import { Component, Inject, Injectable,
provide, Provider } from '@angular/core';
import { APP_CONFIG,
@@ -9,7 +10,7 @@ import { APP_CONFIG,
import { HeroService } from './heroes/hero.service';
import { heroServiceProvider } from './heroes/hero.service.provider';
import { Logger } from './logger.service';
-import { User, UserService } from './user.service';
+import { UserService } from './user.service';
let template = '{{log}}';
@@ -18,12 +19,12 @@ let template = '{{log}}';
selector: 'provider-1',
template: template,
providers:
- //#docregion providers-1
+ // #docregion providers-1
[Logger]
- //#enddocregion providers-1
+ // #enddocregion providers-1
})
export class ProviderComponent1 {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from logger provided with Logger class');
this.log = logger.logs[0];
@@ -35,12 +36,12 @@ export class ProviderComponent1 {
selector: 'provider-2',
template: template,
providers:
- //#docregion providers-2
+ // #docregion providers-2
[new Provider(Logger, {useClass: Logger})]
- //#enddocregion providers-2
+ // #enddocregion providers-2
})
export class ProviderComponent2 {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from logger provided with Provider class and useClass');
this.log = logger.logs[0];
@@ -52,18 +53,35 @@ export class ProviderComponent2 {
selector: 'provider-3',
template: template,
providers:
- //#docregion providers-3
+ // #docregion providers-3
[provide(Logger, {useClass: Logger})]
- //#enddocregion providers-3
+ // #enddocregion providers-3
})
export class ProviderComponent3 {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from logger provided with useClass');
this.log = logger.logs[0];
}
}
+//////////////////////////////////////////
+@Component({
+ selector: 'provider-3a',
+ template: template,
+ providers:
+ // #docregion providers-3a
+ [{provide: Logger, useClass: Logger}]
+ // #enddocregion providers-3a
+})
+export class ProviderComponent3a {
+ log: string;
+ constructor(logger: Logger) {
+ logger.log('Hello from logger provided with {provide: Logger, useClass: Logger}');
+ this.log = logger.logs[0];
+ }
+}
+
//////////////////////////////////////////
class BetterLogger extends Logger {}
@@ -71,12 +89,12 @@ class BetterLogger extends Logger {}
selector: 'provider-4',
template: template,
providers:
- //#docregion providers-4
+ // #docregion providers-4
[provide(Logger, {useClass: BetterLogger})]
- //#enddocregion providers-4
+ // #enddocregion providers-4
})
export class ProviderComponent4 {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from logger provided with useClass:BetterLogger');
this.log = logger.logs[0];
@@ -87,11 +105,11 @@ export class ProviderComponent4 {
// #docregion EvenBetterLogger
@Injectable()
class EvenBetterLogger {
- logs:string[] = [];
+ logs: string[] = [];
constructor(private userService: UserService) { }
- log(message:string){
+ log(message: string){
message = `Message to ${this.userService.user.name}: ${message}.`;
console.log(message);
this.logs.push(message);
@@ -103,13 +121,13 @@ class EvenBetterLogger {
selector: 'provider-5',
template: template,
providers:
- //#docregion providers-5
+ // #docregion providers-5
[ UserService,
provide(Logger, {useClass: EvenBetterLogger}) ]
- //#enddocregion providers-5
+ // #enddocregion providers-5
})
export class ProviderComponent5 {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from EvenBetterlogger');
this.log = logger.logs[0];
@@ -119,9 +137,9 @@ export class ProviderComponent5 {
//////////////////////////////////////////
class NewLogger extends Logger {}
class OldLogger {
- logs:string[] = [];
- log(message:string) {
- throw new Error('Should not call the old logger!')
+ logs: string[] = [];
+ log(message: string) {
+ throw new Error('Should not call the old logger!');
};
}
@@ -129,15 +147,15 @@ class OldLogger {
selector: 'provider-6a',
template: template,
providers:
- //#docregion providers-6a
+ // #docregion providers-6a
[ NewLogger,
// Not aliased! Creates two instances of `NewLogger`
- provide(OldLogger, {useClass:NewLogger}) ]
- //#enddocregion providers-6a
+ provide(OldLogger, {useClass: NewLogger}) ]
+ // #enddocregion providers-6a
})
export class ProviderComponent6a {
- log:string;
- constructor(newLogger:NewLogger, oldLogger: OldLogger) {
+ log: string;
+ constructor(newLogger: NewLogger, oldLogger: OldLogger) {
if (newLogger === oldLogger){
throw new Error('expected the two loggers to be different instances');
}
@@ -152,15 +170,15 @@ export class ProviderComponent6a {
selector: 'provider-6b',
template: template,
providers:
- //#docregion providers-6b
+ // #docregion providers-6b
[ NewLogger,
// Alias OldLogger w/ reference to NewLogger
provide(OldLogger, {useExisting: NewLogger}) ]
- //#enddocregion providers-6b
+ // #enddocregion providers-6b
})
export class ProviderComponent6b {
- log:string;
- constructor(newLogger:NewLogger, oldLogger: OldLogger) {
+ log: string;
+ constructor(newLogger: NewLogger, oldLogger: OldLogger) {
if (newLogger !== oldLogger){
throw new Error('expected the two loggers to be the same instance');
}
@@ -175,19 +193,19 @@ export class ProviderComponent6b {
let silentLogger = {
logs: ['Silent logger says "Shhhhh!". Provided via "useValue"'],
log: () => {}
-}
+};
// #enddocregion silent-logger
@Component({
selector: 'provider-7',
template: template,
providers:
- //#docregion providers-7
+ // #docregion providers-7
[provide(Logger, {useValue: silentLogger})]
- //#enddocregion providers-7
+ // #enddocregion providers-7
})
export class ProviderComponent7 {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from logger provided with useValue');
this.log = logger.logs[0];
@@ -198,7 +216,7 @@ export class ProviderComponent7 {
@Component({
selector: 'provider-8',
template: template,
- providers:[heroServiceProvider, Logger, UserService]
+ providers: [heroServiceProvider, Logger, UserService]
})
export class ProviderComponent8{
// #docregion provider-8-ctor
@@ -206,7 +224,7 @@ export class ProviderComponent8{
// #enddocregion provider-8-ctor
// must be true else this component would have blown up at runtime
- log = 'Hero service injected successfully'
+ log = 'Hero service injected successfully';
}
/////////////////
@@ -248,7 +266,7 @@ export class ProviderComponent9a {
selector: 'provider-9b',
template: template,
// #docregion providers-9b
- providers:[provide(APP_CONFIG, {useValue: CONFIG})]
+ providers: [provide(APP_CONFIG, {useValue: CONFIG})]
// #enddocregion providers-9b
})
export class ProviderComponent9b {
@@ -266,12 +284,12 @@ export class ProviderComponent9b {
@Component({
selector: 'provider-10a',
template: template,
- //#docregion providers-logger
+ // #docregion providers-logger
providers: [Logger]
- //#enddocregion providers-logger
+ // #enddocregion providers-logger
})
export class ProviderComponent10a {
- log:string;
+ log: string;
constructor(logger: Logger) {
logger.log('Hello from the required logger.');
this.log = logger.logs[0];
@@ -289,8 +307,8 @@ import {Optional} from '@angular/core';
})
export class ProviderComponent10b {
// #docregion provider-10-ctor
- log:string;
- constructor(@Optional() private logger:Logger) { }
+ log: string;
+ constructor(@Optional() private logger: Logger) { }
// #enddocregion provider-10-ctor
ngOnInit() {
@@ -298,16 +316,16 @@ export class ProviderComponent10b {
// No logger? Make one!
if (!this.logger) {
this.logger = {
- log: (msg:string)=> this.logger.logs.push(msg),
+ log: (msg: string) => this.logger.logs.push(msg),
logs: []
- }
+ };
// #enddocregion provider-10-logger
- this.logger.log("Optional logger was not available.")
+ this.logger.log('Optional logger was not available.');
// #docregion provider-10-logger
}
// #enddocregion provider-10-logger
else {
- this.logger.log('Hello from the injected logger.')
+ this.logger.log('Hello from the injected logger.');
this.log = this.logger.logs[0];
}
this.log = this.logger.logs[0];
@@ -322,6 +340,7 @@ export class ProviderComponent10b {
+
@@ -333,10 +352,11 @@ export class ProviderComponent10b {
`,
- directives:[
+ directives: [
ProviderComponent1,
ProviderComponent2,
ProviderComponent3,
+ ProviderComponent3a,
ProviderComponent4,
ProviderComponent5,
ProviderComponent6a,
diff --git a/public/docs/_examples/karma-test-shim.js b/public/docs/_examples/karma-test-shim.js
index bc8cf372f3..ec50e1ff66 100644
--- a/public/docs/_examples/karma-test-shim.js
+++ b/public/docs/_examples/karma-test-shim.js
@@ -22,72 +22,33 @@ var allSpecFiles = Object.keys(window.__karma__.files)
.filter(isSpecFile)
.filter(isBuiltFile);
-//////////////////////////
-// Load our SystemJS configuration.
-
-// map tells the System loader where to look for things
-var map = {
- 'app': 'app',
-
- '@angular': 'node_modules/@angular',
- 'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
- 'rxjs': 'node_modules/rxjs'
-};
-
-// packages tells the System loader how to load when no filename and/or no extension
-var packages = {
- 'app': { main: 'main.js', defaultExtension: 'js' },
- 'rxjs': { defaultExtension: 'js' },
- 'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
-};
-
-var ngPackageNames = [
- 'common',
- 'compiler',
- 'core',
- 'http',
- 'platform-browser',
- 'platform-browser-dynamic',
- 'router',
- 'router-deprecated',
- 'upgrade',
-];
-
-// Add package entries for angular packages
-ngPackageNames.forEach(function(pkgName) {
-
- // Bundled (~40 requests): DOESN'T WORK IN KARMA OR WALLABY (YET?)
- //packages['@angular/'+pkgName] = { main: pkgName + '.umd.js', defaultExtension: 'js' };
-
- // Individual files (~300 requests):
- packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
+System.config({
+ baseURL: '/base',
+ packageWithIndex: true // sadly, we can't use umd packages (yet?)
});
-var config = {
- baseURL: '/base',
- map: map,
- packages: packages
-}
+System.import('systemjs.config.js')
+ .then(function () {
+ return Promise.all([
+ System.import('@angular/core/testing'),
+ System.import('@angular/platform-browser-dynamic/testing')
+ ])
+ })
+ .then(function (providers) {
+ var testing = providers[0];
+ var testingBrowser = providers[1];
-System.config(config);
-//////////////
+ testing.setBaseTestProviders(
+ testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
+ testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS);
-Promise.all([
- System.import('@angular/core/testing'),
- System.import('@angular/platform-browser-dynamic/testing')
-]).then(function (providers) {
- var testing = providers[0];
- var testingBrowser = providers[1];
-
- testing.setBaseTestProviders(
- testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
- testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS);
-
-}).then(function() {
- // Finally, load all spec files.
- // This will run the tests directly.
- return Promise.all(
- allSpecFiles.map(function (moduleName) {
- return System.import(moduleName);
- }));
-}).then(__karma__.start, __karma__.error);
+ })
+ .then(function() {
+ // Finally, load all spec files.
+ // This will run the tests directly.
+ return Promise.all(
+ allSpecFiles.map(function (moduleName) {
+ return System.import(moduleName);
+ }));
+ })
+ .then(__karma__.start, __karma__.error);
diff --git a/public/docs/_examples/karma.conf.js b/public/docs/_examples/karma.conf.js
index d39e2ffac8..faa52df98e 100644
--- a/public/docs/_examples/karma.conf.js
+++ b/public/docs/_examples/karma.conf.js
@@ -42,6 +42,7 @@ module.exports = function(config) {
{pattern: 'node_modules/@angular/**/*.js', included: false, watched: false},
{pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false},
+ {pattern: 'systemjs.config.js', included: false, watched: false},
'karma-test-shim.js',
// transpiled application & spec code paths loaded via module imports
diff --git a/public/docs/_examples/package.json b/public/docs/_examples/package.json
index b89d74462e..3a83c2bdf3 100644
--- a/public/docs/_examples/package.json
+++ b/public/docs/_examples/package.json
@@ -38,7 +38,7 @@
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12",
- "angular2-in-memory-web-api": "0.0.9",
+ "angular2-in-memory-web-api": "0.0.10",
"bootstrap": "^3.3.6"
},
"devDependencies": {
@@ -69,7 +69,7 @@
"style-loader": "^0.13.1",
"ts-loader": "^0.8.2",
"typescript": "^1.8.10",
- "typings": "^0.8.1",
+ "typings": "^1.0.4",
"webpack": "^1.13.0",
"webpack-dev-server": "^1.14.1",
"webpack-merge": "^0.12.0"
diff --git a/public/docs/_examples/quickstart/js/package.1.json b/public/docs/_examples/quickstart/js/package.1.json
index 776835efa8..504b6e7413 100644
--- a/public/docs/_examples/quickstart/js/package.1.json
+++ b/public/docs/_examples/quickstart/js/package.1.json
@@ -22,7 +22,7 @@
"rxjs": "5.0.0-beta.6",
"zone.js": "0.6.12",
- "angular2-in-memory-web-api": "0.0.9",
+ "angular2-in-memory-web-api": "0.0.10",
"bootstrap": "^3.3.6"
},
"devDependencies": {
diff --git a/public/docs/_examples/quickstart/ts/package.1.json b/public/docs/_examples/quickstart/ts/package.1.json
index 5cac25cd60..6b26bacea1 100644
--- a/public/docs/_examples/quickstart/ts/package.1.json
+++ b/public/docs/_examples/quickstart/ts/package.1.json
@@ -27,13 +27,13 @@
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12",
- "angular2-in-memory-web-api": "0.0.9",
+ "angular2-in-memory-web-api": "0.0.10",
"bootstrap": "^3.3.6"
},
"devDependencies": {
"concurrently": "^2.0.0",
"lite-server": "^2.2.0",
"typescript": "^1.8.10",
- "typings":"^0.8.1"
+ "typings":"^1.0.4"
}
}
diff --git a/public/docs/_examples/quickstart/ts/tsconfig.1.json b/public/docs/_examples/quickstart/ts/tsconfig.1.json
index c9b986dfd6..e6a6eac11d 100644
--- a/public/docs/_examples/quickstart/ts/tsconfig.1.json
+++ b/public/docs/_examples/quickstart/ts/tsconfig.1.json
@@ -8,10 +8,5 @@
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
- },
- "exclude": [
- "node_modules",
- "typings/main",
- "typings/main.d.ts"
- ]
+ }
}
diff --git a/public/docs/_examples/quickstart/ts/typings.1.json b/public/docs/_examples/quickstart/ts/typings.1.json
index ab3d27d712..7e0e18568d 100644
--- a/public/docs/_examples/quickstart/ts/typings.1.json
+++ b/public/docs/_examples/quickstart/ts/typings.1.json
@@ -1,7 +1,7 @@
{
- "ambientDependencies": {
+ "globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160317120654",
- "jasmine": "registry:dt/jasmine#2.2.0+20160412134438",
+ "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
"node": "registry:dt/node#4.0.0+20160509154515"
}
}
diff --git a/public/docs/_examples/server-communication/dart/.docsync.json b/public/docs/_examples/server-communication/dart/.docsync.json
index 09097599c8..baa578054f 100644
--- a/public/docs/_examples/server-communication/dart/.docsync.json
+++ b/public/docs/_examples/server-communication/dart/.docsync.json
@@ -1,4 +1,4 @@
{
- "name": "HTTP client (server communication)"
- "docHref": "https://angular.io/docs/dart/latest/guide/server-communication.html"
+ "name": "HTTP client (server communication)",
+ "docHref": "https://angular.io/docs/dart/latest/guide/server-communication.html"
}
diff --git a/public/docs/_examples/style-guide/e2e-spec.js b/public/docs/_examples/style-guide/e2e-spec.js
new file mode 100644
index 0000000000..31b6db0136
--- /dev/null
+++ b/public/docs/_examples/style-guide/e2e-spec.js
@@ -0,0 +1,201 @@
+describe('Style Guide', function () {
+ it('01-01', function () {
+ browser.get('#/01-01');
+
+ var pre = element(by.tagName('toh-heroes > pre'));
+ expect(pre.getText()).toContain('Bombasto');
+ expect(pre.getText()).toContain('Tornado');
+ expect(pre.getText()).toContain('Magneta');
+ });
+
+ it('02-07', function () {
+ browser.get('#/02-07');
+
+ var hero = element(by.tagName('toh-hero > div'));
+ var users = element(by.tagName('admin-users > div'));
+
+ expect(hero.getText()).toBe('hero component');
+ expect(users.getText()).toBe('users component');
+ });
+
+ it('02-08', function () {
+ browser.get('#/02-08');
+
+ var input = element(by.tagName('input[tohvalidate]'));
+ expect(input.isPresent()).toBe(true);
+ });
+
+ it('03-01', function () {
+ browser.get('#/03-01');
+
+ var div = element(by.tagName('sg-app > div'));
+ expect(div.getText()).toBe('The expected error is 42');
+ });
+
+ it('03-02', function () {
+ browser.get('#/03-02');
+
+ var divs = element.all(by.tagName('sg-app > div'));
+ expect(divs.get(0).getText()).toBe('Heroes url: api/heroes');
+ expect(divs.get(1).getText()).toBe('Villains url: api/villains');
+ });
+
+ it('03-03', function () {
+ browser.get('#/03-03');
+
+ var div = element(by.tagName('sg-app > div'));
+ expect(div.getText()).toBe('Our hero is RubberMan and He is so elastic');
+ });
+
+ it('03-04', function () {
+ browser.get('#/03-04');
+
+ var buttons = element.all(by.tagName('sg-app > button'));
+ expect(buttons.get(0).getText()).toBe('Show toast');
+ expect(buttons.get(1).getText()).toBe('Hide toast');
+ });
+
+ it('03-05', function () {
+ browser.get('#/03-05');
+
+ var lis = element.all(by.tagName('sg-app > ul > li'));
+ expect(lis.get(0).getText()).toBe('Windstorm');
+ expect(lis.get(1).getText()).toBe('Bombasto');
+ expect(lis.get(2).getText()).toBe('Magneta');
+ expect(lis.get(3).getText()).toBe('Tornado');
+ });
+
+ it('03-06', function () {
+ browser.get('#/03-06');
+
+ var lis = element.all(by.tagName('sg-app > ul > li'));
+ expect(lis.get(0).getText()).toBe('Windstorm');
+ expect(lis.get(1).getText()).toBe('Bombasto');
+ expect(lis.get(2).getText()).toBe('Magneta');
+ expect(lis.get(3).getText()).toBe('Tornado');
+ });
+
+ it('04-10', function () {
+ browser.get('#/04-10');
+
+ var div = element(by.tagName('sg-app > toh-heroes > div'));
+ expect(div.getText()).toBe('This is heroes component');
+ });
+
+ it('04-14', function () {
+ browser.get('#/04-14');
+
+ var h2 = element(by.tagName('sg-app > toh-heroes > div > h2'));
+ expect(h2.getText()).toBe('My Heroes');
+ });
+
+ it('05-02', function () {
+ browser.get('#/05-02');
+
+ var button = element(by.tagName('sg-app > toh-hero-button > button'));
+ expect(button.getText()).toBe('Hero button');
+ });
+
+ it('05-03', function () {
+ browser.get('#/05-03');
+
+ var button = element(by.tagName('sg-app > toh-hero-button > button'));
+ expect(button.getText()).toBe('Hero button');
+ });
+
+ it('05-04', function () {
+ browser.get('#/05-04');
+
+ var h2 = element(by.tagName('sg-app > toh-heroes > div > h2'));
+ expect(h2.getText()).toBe('My Heroes');
+ });
+
+ it('05-12', function () {
+ browser.get('#/05-12');
+
+ var button = element(by.tagName('sg-app > toh-hero-button > button'));
+ expect(button.getText()).toBe('OK');
+ });
+
+ it('05-13', function () {
+ browser.get('#/05-13');
+
+ var button = element(by.tagName('sg-app > toh-hero-button > button'));
+ expect(button.getText()).toBe('OK');
+ });
+
+ it('05-14', function () {
+ browser.get('#/05-14');
+
+ var toast = element(by.tagName('sg-app > toh-toast'));
+ expect(toast.getText()).toBe('...');
+ });
+
+ it('05-15', function () {
+ browser.get('#/05-15');
+
+ var heroList = element(by.tagName('sg-app > toh-hero-list'));
+ expect(heroList.getText()).toBe('...');
+ });
+
+ it('05-16', function () {
+ browser.get('#/05-16');
+
+ var hero = element(by.tagName('sg-app > toh-hero'));
+ expect(hero.getText()).toBe('...');
+ });
+
+ it('05-17', function () {
+ browser.get('#/05-17');
+
+ var section = element(by.tagName('sg-app > toh-hero-list > section'));
+ expect(section.getText()).toContain('Our list of heroes');
+ expect(section.getText()).toContain('Total powers');
+ expect(section.getText()).toContain('Average power');
+ });
+
+ it('06-01', function () {
+ browser.get('#/06-01');
+
+ var div = element(by.tagName('sg-app > div[tohhighlight]'));
+ expect(div.getText()).toBe('Bombasta');
+ });
+
+ it('06-03', function () {
+ browser.get('#/06-03');
+
+ var input = element(by.tagName('input[tohvalidator]'));
+ expect(input.isPresent()).toBe(true);
+ });
+
+ it('07-01', function () {
+ browser.get('#/07-01');
+
+ var lis = element.all(by.tagName('sg-app > ul > li'));
+ expect(lis.get(0).getText()).toBe('Windstorm');
+ expect(lis.get(1).getText()).toBe('Bombasto');
+ expect(lis.get(2).getText()).toBe('Magneta');
+ expect(lis.get(3).getText()).toBe('Tornado');
+ });
+
+ it('07-03', function () {
+ browser.get('#/07-03');
+
+ var pre = element(by.tagName('toh-heroes > pre'));
+ expect(pre.getText()).toContain('[]');
+ });
+
+ it('07-04', function () {
+ browser.get('#/07-04');
+
+ var pre = element(by.tagName('toh-app > pre'));
+ expect(pre.getText()).toContain('[]');
+ });
+
+ it('09-01', function () {
+ browser.get('#/09-01');
+
+ var button = element(by.tagName('sg-app > toh-hero-button > button'));
+ expect(button.getText()).toBe('OK');
+ });
+});
diff --git a/public/docs/_examples/style-guide/ts/.gitignore b/public/docs/_examples/style-guide/ts/.gitignore
index a6c7c2852d..bd6423cecb 100644
--- a/public/docs/_examples/style-guide/ts/.gitignore
+++ b/public/docs/_examples/style-guide/ts/.gitignore
@@ -1 +1,2 @@
*.js
+!systemjs.custom.js
diff --git a/public/docs/_examples/style-guide/ts/01-01/app/app.component.css b/public/docs/_examples/style-guide/ts/01-01/app/app.component.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/public/docs/_examples/style-guide/ts/01-01/app/app.component.ts b/public/docs/_examples/style-guide/ts/01-01/app/app.component.ts
index afe49b80a8..a35bd6d420 100644
--- a/public/docs/_examples/style-guide/ts/01-01/app/app.component.ts
+++ b/public/docs/_examples/style-guide/ts/01-01/app/app.component.ts
@@ -7,11 +7,12 @@ import { HeroesComponent } from './heroes/heroes.component';
import { HeroService } from './heroes/shared/hero.service';
@Component({
+ moduleId: module.id,
selector: 'toh-app',
template: `
`,
- styleUrls: ['app/app.component.css'],
+ styleUrls: ['app.component.css'],
directives: [HeroesComponent],
providers: [HeroService]
})
diff --git a/public/docs/_examples/style-guide/ts/02-07/app/app.component.ts b/public/docs/_examples/style-guide/ts/02-07/app/app.component.ts
new file mode 100644
index 0000000000..408a34f5d6
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/02-07/app/app.component.ts
@@ -0,0 +1,14 @@
+import { Component } from '@angular/core';
+
+import { HeroComponent } from './heroes/hero.component';
+import { UsersComponent } from './users/users.component';
+
+@Component({
+ selector: 'sg-app',
+ template: `
+
+
+ `,
+ directives: [HeroComponent, UsersComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/02-07/app/heroes/hero.component.ts b/public/docs/_examples/style-guide/ts/02-07/app/heroes/hero.component.ts
index d324036ef0..44c04dd855 100644
--- a/public/docs/_examples/style-guide/ts/02-07/app/heroes/hero.component.ts
+++ b/public/docs/_examples/style-guide/ts/02-07/app/heroes/hero.component.ts
@@ -1,8 +1,12 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
// #docregion example
@Component({
+ // #enddocregion example
+ template: '
hero component
',
+ // #docregion example
selector: 'toh-hero'
})
export class HeroComponent {}
diff --git a/public/docs/_examples/style-guide/ts/02-07/app/users/users.component.ts b/public/docs/_examples/style-guide/ts/02-07/app/users/users.component.ts
index 6597c57ec0..2fb6d54ebe 100644
--- a/public/docs/_examples/style-guide/ts/02-07/app/users/users.component.ts
+++ b/public/docs/_examples/style-guide/ts/02-07/app/users/users.component.ts
@@ -1,8 +1,12 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
// #docregion example
@Component({
+ // #enddocregion example
+ template: '
users component
',
+ // #docregion example
selector: 'admin-users'
})
export class UsersComponent {}
diff --git a/public/docs/_examples/style-guide/ts/02-08/app/app.component.ts b/public/docs/_examples/style-guide/ts/02-08/app/app.component.ts
new file mode 100644
index 0000000000..ffc693e1a7
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/02-08/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { ValidateDirective } from './shared/validate.directive';
+
+@Component({
+ selector: 'sg-app',
+ template: '
',
+ directives: [ValidateDirective]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/03-01/app/app.component.ts b/public/docs/_examples/style-guide/ts/03-01/app/app.component.ts
new file mode 100644
index 0000000000..cd8666bd52
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-01/app/app.component.ts
@@ -0,0 +1,18 @@
+import { Component, OnInit } from '@angular/core';
+
+import { ExceptionService } from './shared/exception.service';
+
+@Component({
+ selector: 'sg-app',
+ template: '
The expected error is {{errorCode}}
',
+ providers: [ExceptionService]
+})
+export class AppComponent implements OnInit {
+ errorCode: number;
+
+ constructor(private exceptionService: ExceptionService) { }
+
+ ngOnInit() {
+ this.errorCode = this.exceptionService.getException();
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/03-01/app/shared/exception.service.ts b/public/docs/_examples/style-guide/ts/03-01/app/shared/exception.service.ts
index dd149b2046..dd77b4f7dc 100644
--- a/public/docs/_examples/style-guide/ts/03-01/app/shared/exception.service.ts
+++ b/public/docs/_examples/style-guide/ts/03-01/app/shared/exception.service.ts
@@ -1,3 +1,4 @@
+// #docplaster
// #docregion
import { Injectable } from '@angular/core';
@@ -5,5 +6,9 @@ import { Injectable } from '@angular/core';
// #docregion example
export class ExceptionService {
constructor() { }
+ // #enddocregion example
+ // testing harness
+ getException() { return 42; }
+ // #docregion example
}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/03-02/app/app.component.ts b/public/docs/_examples/style-guide/ts/03-02/app/app.component.ts
new file mode 100644
index 0000000000..a434f05635
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-02/app/app.component.ts
@@ -0,0 +1,15 @@
+import { Component } from '@angular/core';
+
+import { HEROES_URL, VILLAINS_URL } from './shared/data.service';
+
+@Component({
+ selector: 'sg-app',
+ template: `
+
Heroes url: {{heroesUrl}}
+
Villains url: {{villainsUrl}}
+ `,
+})
+export class AppComponent {
+ heroesUrl = HEROES_URL;
+ villainsUrl = VILLAINS_URL;
+}
diff --git a/public/docs/_examples/style-guide/ts/03-02/app/shared/data.service.ts b/public/docs/_examples/style-guide/ts/03-02/app/shared/data.service.ts
index fedc4f3caf..ad665a99c2 100644
--- a/public/docs/_examples/style-guide/ts/03-02/app/shared/data.service.ts
+++ b/public/docs/_examples/style-guide/ts/03-02/app/shared/data.service.ts
@@ -1,5 +1,5 @@
// #docregion
// #docregion example
export const HEROES_URL = 'api/heroes';
-export const VILLAIN_URL = 'api/villains';
+export const VILLAINS_URL = 'api/villains';
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/03-03/app/app.component.ts b/public/docs/_examples/style-guide/ts/03-03/app/app.component.ts
new file mode 100644
index 0000000000..bd2f43025d
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-03/app/app.component.ts
@@ -0,0 +1,19 @@
+import { Component, OnInit } from '@angular/core';
+
+import { HeroCollectorService } from './shared/hero-collector.service';
+import { Hero } from './shared/hero.model';
+
+@Component({
+ selector: 'sg-app',
+ template: '
Our hero is {{hero.name}} and {{hero.power}}
',
+ providers: [HeroCollectorService]
+})
+export class AppComponent implements OnInit {
+ hero: Hero;
+
+ constructor(private heroCollectorService: HeroCollectorService) { }
+
+ ngOnInit() {
+ this.hero = this.heroCollectorService.getHero();
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/03-03/app/shared/hero-collector.service.ts b/public/docs/_examples/style-guide/ts/03-03/app/shared/hero-collector.service.ts
index 4be6b989c2..1df5c0deb0 100644
--- a/public/docs/_examples/style-guide/ts/03-03/app/shared/hero-collector.service.ts
+++ b/public/docs/_examples/style-guide/ts/03-03/app/shared/hero-collector.service.ts
@@ -1,3 +1,4 @@
+// #docplaster
// #docregion
// #docregion example
import { Injectable } from '@angular/core';
@@ -9,5 +10,16 @@ export class HeroCollectorService {
hero: Hero;
constructor() { }
+ // #enddocregion example
+ // testing harness
+ getHero() {
+ this.hero = {
+ name: 'RubberMan',
+ power: 'He is so elastic'
+ };
+
+ return this.hero;
+ }
+ // #docregion example
}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/03-04/app/app.component.ts b/public/docs/_examples/style-guide/ts/03-04/app/app.component.ts
new file mode 100644
index 0000000000..83e9e8f038
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-04/app/app.component.ts
@@ -0,0 +1,27 @@
+import { Component, OnInit } from '@angular/core';
+
+import { ToastService } from './shared/toast.service';
+
+@Component({
+ selector: 'sg-app',
+ template: `
+
Show toast
+
Hide toast
+ `,
+ providers: [ToastService]
+})
+export class AppComponent implements OnInit {
+ constructor(private toastService: ToastService) { }
+
+ hide() {
+ this.toastService.hide();
+ }
+
+ show() {
+ this.toastService.show();
+ }
+
+ ngOnInit() {
+ this.toastService.activate('Hello style-guide!');
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/03-04/app/shared/toast/toast.service.avoid.ts b/public/docs/_examples/style-guide/ts/03-04/app/shared/toast.service.avoid.ts
similarity index 100%
rename from public/docs/_examples/style-guide/ts/03-04/app/shared/toast/toast.service.avoid.ts
rename to public/docs/_examples/style-guide/ts/03-04/app/shared/toast.service.avoid.ts
diff --git a/public/docs/_examples/style-guide/ts/03-04/app/shared/toast/toast.service.ts b/public/docs/_examples/style-guide/ts/03-04/app/shared/toast.service.ts
similarity index 70%
rename from public/docs/_examples/style-guide/ts/03-04/app/shared/toast/toast.service.ts
rename to public/docs/_examples/style-guide/ts/03-04/app/shared/toast.service.ts
index 228a4dbd6b..ab148a1732 100644
--- a/public/docs/_examples/style-guide/ts/03-04/app/shared/toast/toast.service.ts
+++ b/public/docs/_examples/style-guide/ts/03-04/app/shared/toast.service.ts
@@ -1,3 +1,4 @@
+// #docplaster
// #docregion
// #docregion example
import { Injectable } from '@angular/core';
@@ -21,5 +22,11 @@ export class ToastService {
private log() {
console.log(this.message);
}
+ // #enddocregion example
+ // testing harness
+ activate(message: string) {
+ this.message = message;
+ }
+ // #docregion example
}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/03-05/app/+heroes/shared/hero.service.ts b/public/docs/_examples/style-guide/ts/03-05/app/+heroes/shared/hero.service.ts
index 817fdbead1..85fa486432 100644
--- a/public/docs/_examples/style-guide/ts/03-05/app/+heroes/shared/hero.service.ts
+++ b/public/docs/_examples/style-guide/ts/03-05/app/+heroes/shared/hero.service.ts
@@ -19,7 +19,7 @@ export class HeroService {
) { }
getHero(id: number) {
- return this.http.get(`api/heroes/${id}`)
+ return this.http.get(`app/heroes/${id}`)
.map((res: Response) => res.json().data);
}
diff --git a/public/docs/_examples/style-guide/ts/03-05/app/app.component.html b/public/docs/_examples/style-guide/ts/03-05/app/app.component.html
new file mode 100644
index 0000000000..3c05329f3f
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-05/app/app.component.html
@@ -0,0 +1,5 @@
+
diff --git a/public/docs/_examples/style-guide/ts/03-05/app/app.component.ts b/public/docs/_examples/style-guide/ts/03-05/app/app.component.ts
new file mode 100644
index 0000000000..9cc5ee4ec3
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-05/app/app.component.ts
@@ -0,0 +1,21 @@
+import { Component, OnInit } from '@angular/core';
+
+import { HeroService } from './+heroes/shared/hero.service';
+import { ExceptionService, SpinnerService, ToastService } from './shared';
+import { Hero } from './+heroes/shared/hero.model';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ providers: [HeroService, ExceptionService, SpinnerService, ToastService]
+})
+export class AppComponent implements OnInit {
+ heroes: Hero[];
+
+ constructor(private heroService: HeroService) { }
+
+ ngOnInit() {
+ this.heroService.getHeroes().subscribe(heroes => this.heroes = heroes);
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/03-06/app/app.component.html b/public/docs/_examples/style-guide/ts/03-06/app/app.component.html
new file mode 100644
index 0000000000..3c05329f3f
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-06/app/app.component.html
@@ -0,0 +1,5 @@
+
diff --git a/public/docs/_examples/style-guide/ts/03-06/app/app.component.ts b/public/docs/_examples/style-guide/ts/03-06/app/app.component.ts
new file mode 100644
index 0000000000..9cc5ee4ec3
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/03-06/app/app.component.ts
@@ -0,0 +1,21 @@
+import { Component, OnInit } from '@angular/core';
+
+import { HeroService } from './+heroes/shared/hero.service';
+import { ExceptionService, SpinnerService, ToastService } from './shared';
+import { Hero } from './+heroes/shared/hero.model';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ providers: [HeroService, ExceptionService, SpinnerService, ToastService]
+})
+export class AppComponent implements OnInit {
+ heroes: Hero[];
+
+ constructor(private heroService: HeroService) { }
+
+ ngOnInit() {
+ this.heroService.getHeroes().subscribe(heroes => this.heroes = heroes);
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.html b/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.html
new file mode 100644
index 0000000000..1244e68a4a
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.html
@@ -0,0 +1 @@
+
This is heroes component
diff --git a/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.ts b/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.ts
index ba822be033..9ca611ee5c 100644
--- a/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.ts
+++ b/public/docs/_examples/style-guide/ts/04-10/app/+heroes/heroes.component.ts
@@ -15,12 +15,13 @@ import {
@Component({
// #enddocregion example
+ moduleId: module.id,
providers: [EntityService, ExceptionService, SpinnerService, ToastService],
directives: [FilterTextComponent],
pipes: [InitCapsPipe],
// #docregion example
selector: 'toh-heroes',
- templateUrl: 'app/+heroes/heroes.component.html'
+ templateUrl: 'heroes.component.html'
})
export class HeroesComponent implements OnInit {
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/04-10/app/app.component.ts b/public/docs/_examples/style-guide/ts/04-10/app/app.component.ts
index 8e143a5a59..e0c50dc7e7 100644
--- a/public/docs/_examples/style-guide/ts/04-10/app/app.component.ts
+++ b/public/docs/_examples/style-guide/ts/04-10/app/app.component.ts
@@ -6,8 +6,8 @@ import { HeroesComponent } from './+heroes/index';
// #enddocregion example
@Component({
- selector: 'toh-app',
- template: '
app
',
+ selector: 'sg-app',
+ template: '
',
directives: [HeroesComponent]
})
export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/04-10/app/shared/index.ts b/public/docs/_examples/style-guide/ts/04-10/app/shared/index.ts
index 3c20b39ad7..faee6ada96 100644
--- a/public/docs/_examples/style-guide/ts/04-10/app/shared/index.ts
+++ b/public/docs/_examples/style-guide/ts/04-10/app/shared/index.ts
@@ -11,13 +11,13 @@ export * from './spinner';
export * from './toast';
// #enddocregion example
-import {EntityService} from './entity.service';
-import {ExceptionService} from './exception.service';
-import {FilterService} from './filter-text';
-import {InitCapsPipe} from './init-caps.pipe';
-import {ModalService} from './modal';
-import {SpinnerService} from './spinner';
-import {ToastService} from './toast';
+import { EntityService } from './entity.service';
+import { ExceptionService } from './exception.service';
+import { FilterService } from './filter-text';
+import { InitCapsPipe } from './init-caps.pipe';
+import { ModalService } from './modal';
+import { SpinnerService } from './spinner';
+import { ToastService } from './toast';
export const BLOCK_PROVIDERS = [
EntityService,
diff --git a/public/docs/_examples/style-guide/ts/04-14/app/app.component.ts b/public/docs/_examples/style-guide/ts/04-14/app/app.component.ts
new file mode 100644
index 0000000000..8ceb6f5de0
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/04-14/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { HeroesComponent } from './heroes/heroes.component';
+
+@Component({
+ selector: 'sg-app',
+ template: '
',
+ directives: [HeroesComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.html b/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.html
index b899229cab..b6bf75ef1a 100644
--- a/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.html
+++ b/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.html
@@ -2,7 +2,7 @@
My Heroes
-
+
{{hero.id}} {{hero.name}}
diff --git a/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.ts b/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.ts
index c72952e2c7..da3520ccce 100644
--- a/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.ts
+++ b/public/docs/_examples/style-guide/ts/04-14/app/heroes/heroes.component.ts
@@ -7,6 +7,7 @@ import { Logger } from '../shared/logger.service';
// #enddocregion example
@Component({
+ moduleId: module.id,
selector: 'toh-heroes',
templateUrl: 'heroes.component.html',
styleUrls: ['heroes.component.css'],
diff --git a/public/docs/_examples/style-guide/ts/04-15/app/+heroes/index.ts b/public/docs/_examples/style-guide/ts/04-15/app/+heroes/index.ts
deleted file mode 100644
index 45d52e8c70..0000000000
--- a/public/docs/_examples/style-guide/ts/04-15/app/+heroes/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Needed for the .avoid code to compile
-export const HeroesComponent = 42;
diff --git a/public/docs/_examples/style-guide/ts/04-15/app/app.component.avoid.ts b/public/docs/_examples/style-guide/ts/04-15/app/app.component.avoid.ts
deleted file mode 100644
index d41269c2c5..0000000000
--- a/public/docs/_examples/style-guide/ts/04-15/app/app.component.avoid.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// #docregion
-import { Component } from '@angular/core';
-
-// #docregion example
-import { HeroesComponent } from './+heroes';
-// #enddocregion example
-
-@Component({
- selector: 'toh-app'
-})
-export class AppComponent {}
diff --git a/public/docs/_examples/style-guide/ts/04-16/app/+heroes/index.ts b/public/docs/_examples/style-guide/ts/04-16/app/+heroes/index.ts
deleted file mode 100644
index 45d52e8c70..0000000000
--- a/public/docs/_examples/style-guide/ts/04-16/app/+heroes/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-// Needed for the .avoid code to compile
-export const HeroesComponent = 42;
diff --git a/public/docs/_examples/style-guide/ts/04-16/app/app.component.avoid.ts b/public/docs/_examples/style-guide/ts/04-16/app/app.component.avoid.ts
deleted file mode 100644
index d41269c2c5..0000000000
--- a/public/docs/_examples/style-guide/ts/04-16/app/app.component.avoid.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// #docregion
-import { Component } from '@angular/core';
-
-// #docregion example
-import { HeroesComponent } from './+heroes';
-// #enddocregion example
-
-@Component({
- selector: 'toh-app'
-})
-export class AppComponent {}
diff --git a/public/docs/_examples/style-guide/ts/05-02/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-02/app/app.component.ts
new file mode 100644
index 0000000000..aec6735502
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-02/app/app.component.ts
@@ -0,0 +1,11 @@
+import { Component } from '@angular/core';
+
+import { HeroButtonComponent } from './heroes/shared/hero-button/hero-button.component';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ directives: [HeroButtonComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.avoid.ts b/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.avoid.ts
index ec7145d349..7be30dc913 100644
--- a/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.avoid.ts
+++ b/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.avoid.ts
@@ -1,10 +1,15 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
// #docregion example
/* avoid */
@Component({
- selector: 'tohHeroButton'
+ // #enddocregion example
+ moduleId: module.id,
+ // #docregion example
+ selector: 'tohHeroButton',
+ templateUrl: 'hero-button.component.html'
})
export class HeroButtonComponent {}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.html b/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.html
new file mode 100644
index 0000000000..9ad67e50ac
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.html
@@ -0,0 +1 @@
+
Hero button
diff --git a/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.ts b/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.ts
index 523fc4e2fb..439ce328d5 100644
--- a/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-02/app/heroes/shared/hero-button/hero-button.component.ts
@@ -1,9 +1,14 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
// #docregion example
@Component({
- selector: 'toh-hero-button'
+ // #enddocregion example
+ moduleId: module.id,
+ // #docregion example
+ selector: 'toh-hero-button',
+ templateUrl: 'hero-button.component.html'
})
export class HeroButtonComponent {}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.html b/public/docs/_examples/style-guide/ts/05-03/app/app.component.avoid.html
similarity index 100%
rename from public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.html
rename to public/docs/_examples/style-guide/ts/05-03/app/app.component.avoid.html
diff --git a/public/docs/_examples/style-guide/ts/05-03/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-03/app/app.component.ts
new file mode 100644
index 0000000000..aec6735502
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-03/app/app.component.ts
@@ -0,0 +1,11 @@
+import { Component } from '@angular/core';
+
+import { HeroButtonComponent } from './heroes/shared/hero-button/hero-button.component';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ directives: [HeroButtonComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.ts b/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.ts
index e7358e4de6..4cbf731912 100644
--- a/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.ts
+++ b/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.ts
@@ -1,10 +1,15 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
// #docregion example
/* avoid */
@Component({
- selector: '[tohHeroButton]'
+ // #enddocregion example
+ moduleId: module.id,
+ // #docregion example
+ selector: '[tohHeroButton]',
+ templateUrl: 'hero-button.component.html'
})
export class HeroButtonComponent {}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.html b/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.html
new file mode 100644
index 0000000000..9ad67e50ac
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.html
@@ -0,0 +1 @@
+
Hero button
diff --git a/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.ts b/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.ts
index 523fc4e2fb..439ce328d5 100644
--- a/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.ts
@@ -1,9 +1,14 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
// #docregion example
@Component({
- selector: 'toh-hero-button'
+ // #enddocregion example
+ moduleId: module.id,
+ // #docregion example
+ selector: 'toh-hero-button',
+ templateUrl: 'hero-button.component.html'
})
export class HeroButtonComponent {}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/05-04/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-04/app/app.component.ts
new file mode 100644
index 0000000000..8ceb6f5de0
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-04/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { HeroesComponent } from './heroes/heroes.component';
+
+@Component({
+ selector: 'sg-app',
+ template: '
',
+ directives: [HeroesComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-04/app/heroes/heroes.component.ts b/public/docs/_examples/style-guide/ts/05-04/app/heroes/heroes.component.ts
index ec91f419a5..0c59fac703 100644
--- a/public/docs/_examples/style-guide/ts/05-04/app/heroes/heroes.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-04/app/heroes/heroes.component.ts
@@ -1,3 +1,4 @@
+// #docplaster
// #docregion
import { Component, OnInit } from '@angular/core';
@@ -5,6 +6,9 @@ import { Hero } from './shared/hero.model';
// #docregion example
@Component({
+ // #enddocregion example
+ moduleId: module.id,
+ // #docregion example
selector: 'toh-heroes',
templateUrl: 'heroes.component.html',
styleUrls: ['heroes.component.css']
diff --git a/public/docs/_examples/style-guide/ts/05-12/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-12/app/app.component.ts
new file mode 100644
index 0000000000..3f1ce4a4fa
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-12/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { HeroButtonComponent } from './heroes/shared/hero-button/hero-button.component';
+
+@Component({
+ selector: 'sg-app',
+ template: '
',
+ directives: [HeroButtonComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-12/app/heroes/shared/hero-button/hero-button.component.ts b/public/docs/_examples/style-guide/ts/05-12/app/heroes/shared/hero-button/hero-button.component.ts
index cc2ccd6e98..b299740765 100644
--- a/public/docs/_examples/style-guide/ts/05-12/app/heroes/shared/hero-button/hero-button.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-12/app/heroes/shared/hero-button/hero-button.component.ts
@@ -4,7 +4,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
// #docregion example
@Component({
selector: 'toh-hero-button',
- template: `
OK `
+ template: `
{{label}} `
})
export class HeroButtonComponent {
@Output() change = new EventEmitter
();
diff --git a/public/docs/_examples/style-guide/ts/05-13/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-13/app/app.component.ts
new file mode 100644
index 0000000000..aec6735502
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-13/app/app.component.ts
@@ -0,0 +1,11 @@
+import { Component } from '@angular/core';
+
+import { HeroButtonComponent } from './heroes/shared/hero-button/hero-button.component';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ directives: [HeroButtonComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-14/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-14/app/app.component.ts
new file mode 100644
index 0000000000..29ad33703f
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-14/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { ToastComponent } from './shared/toast/toast.component';
+
+@Component({
+ selector: 'sg-app',
+ template: ` `,
+ directives: [ToastComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-14/app/shared/toast/toast.component.ts b/public/docs/_examples/style-guide/ts/05-14/app/shared/toast/toast.component.ts
index e9d2a23e65..5a56ad6c04 100644
--- a/public/docs/_examples/style-guide/ts/05-14/app/shared/toast/toast.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-14/app/shared/toast/toast.component.ts
@@ -2,7 +2,7 @@
import { Component, OnInit } from '@angular/core';
@Component({
- selector: 'my-toast',
+ selector: 'toh-toast',
template: `...`
})
// #docregion example
diff --git a/public/docs/_examples/style-guide/ts/05-15/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-15/app/app.component.ts
new file mode 100644
index 0000000000..cb8cf26877
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-15/app/app.component.ts
@@ -0,0 +1,12 @@
+import { Component } from '@angular/core';
+
+import { HeroListComponent } from './heroes/hero-list/hero-list.component';
+import { HeroService } from './heroes/shared';
+
+@Component({
+ selector: 'sg-app',
+ template: ' ',
+ directives: [HeroListComponent],
+ providers: [HeroService]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-15/app/heroes/hero-list/hero-list.component.ts b/public/docs/_examples/style-guide/ts/05-15/app/heroes/hero-list/hero-list.component.ts
index 48da4c7ee4..1fdb893c13 100644
--- a/public/docs/_examples/style-guide/ts/05-15/app/heroes/hero-list/hero-list.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-15/app/heroes/hero-list/hero-list.component.ts
@@ -1,7 +1,7 @@
// #docregion example
import { Component, OnInit } from '@angular/core';
-import { Hero, HeroService } from '../shared/index';
+import { Hero, HeroService } from '../shared';
@Component({
selector: 'toh-hero-list',
@@ -10,13 +10,13 @@ import { Hero, HeroService } from '../shared/index';
export class HeroListComponent implements OnInit {
heroes: Hero[];
constructor(private heroService: HeroService) {}
- getHeros() {
+ getHeroes() {
this.heroes = [];
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
ngOnInit() {
- this.getHeros();
+ this.getHeroes();
}
}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/05-15/app/heroes/shared/index.ts b/public/docs/_examples/style-guide/ts/05-15/app/heroes/shared/index.ts
index 330dbe676c..27516fdedd 100644
--- a/public/docs/_examples/style-guide/ts/05-15/app/heroes/shared/index.ts
+++ b/public/docs/_examples/style-guide/ts/05-15/app/heroes/shared/index.ts
@@ -1,3 +1,3 @@
// #docregion
-export * from './hero.model.ts';
-export * from './hero.service.ts';
+export * from './hero.model';
+export * from './hero.service';
diff --git a/public/docs/_examples/style-guide/ts/05-16/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-16/app/app.component.ts
new file mode 100644
index 0000000000..297fb5b74d
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-16/app/app.component.ts
@@ -0,0 +1,11 @@
+import { Component } from '@angular/core';
+
+import { HeroComponent } from './heroes/hero.component';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ directives: [HeroComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-17/app/app.component.ts b/public/docs/_examples/style-guide/ts/05-17/app/app.component.ts
new file mode 100644
index 0000000000..e9437befb4
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/05-17/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { HeroListComponent } from './heroes/hero-list/hero-list.component';
+
+@Component({
+ selector: 'sg-app',
+ template: ' ',
+ directives: [HeroListComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/05-17/app/heroes/hero-list/hero-list.component.ts b/public/docs/_examples/style-guide/ts/05-17/app/heroes/hero-list/hero-list.component.ts
index f78deda2bf..8570544a36 100644
--- a/public/docs/_examples/style-guide/ts/05-17/app/heroes/hero-list/hero-list.component.ts
+++ b/public/docs/_examples/style-guide/ts/05-17/app/heroes/hero-list/hero-list.component.ts
@@ -1,3 +1,4 @@
+// #docplaster
// #docregion
import { Component } from '@angular/core';
@@ -20,6 +21,13 @@ export class HeroListComponent {
heroes: Hero[];
totalPowers: number;
+ // #enddocregion example
+ // testing harness
+ constructor() {
+ this.heroes = [];
+ }
+
+ // #docregion example
get avgPower() {
return this.totalPowers / this.heroes.length;
}
diff --git a/public/docs/_examples/style-guide/ts/06-01/app/app.component.html b/public/docs/_examples/style-guide/ts/06-01/app/app.component.html
index 82b7c0a173..2ccf87d0f5 100644
--- a/public/docs/_examples/style-guide/ts/06-01/app/app.component.html
+++ b/public/docs/_examples/style-guide/ts/06-01/app/app.component.html
@@ -1,2 +1,2 @@
-Bombasta
+Bombasta
diff --git a/public/docs/_examples/style-guide/ts/06-01/app/app.component.ts b/public/docs/_examples/style-guide/ts/06-01/app/app.component.ts
new file mode 100644
index 0000000000..bd1374520d
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/06-01/app/app.component.ts
@@ -0,0 +1,11 @@
+import { Component } from '@angular/core';
+
+import { HighlightDirective } from './shared/highlight.directive';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ directives: [HighlightDirective]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/06-03/app/app.component.ts b/public/docs/_examples/style-guide/ts/06-03/app/app.component.ts
new file mode 100644
index 0000000000..dbc24dfc2d
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/06-03/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { ValidatorDirective } from './shared/validate.directive';
+
+@Component({
+ selector: 'sg-app',
+ template: ' ',
+ directives: [ValidatorDirective]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/07-01/app/app.component.html b/public/docs/_examples/style-guide/ts/07-01/app/app.component.html
new file mode 100644
index 0000000000..3c05329f3f
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/07-01/app/app.component.html
@@ -0,0 +1,5 @@
+
diff --git a/public/docs/_examples/style-guide/ts/07-01/app/app.component.ts b/public/docs/_examples/style-guide/ts/07-01/app/app.component.ts
new file mode 100644
index 0000000000..5c6491c86c
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/07-01/app/app.component.ts
@@ -0,0 +1,20 @@
+import { Component, OnInit } from '@angular/core';
+
+import { HeroService } from './heroes/shared/hero.service';
+import { Hero } from './heroes/shared/hero.model';
+
+@Component({
+ moduleId: module.id,
+ selector: 'sg-app',
+ templateUrl: 'app.component.html',
+ providers: [HeroService]
+})
+export class AppComponent implements OnInit {
+ heroes: Hero[];
+
+ constructor(private heroService: HeroService) { }
+
+ ngOnInit() {
+ this.heroService.getHeroes().subscribe(heroes => this.heroes = heroes);
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/07-04/app/app.component.ts b/public/docs/_examples/style-guide/ts/07-04/app/app.component.ts
new file mode 100644
index 0000000000..608d7cf403
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/07-04/app/app.component.ts
@@ -0,0 +1,19 @@
+// #docregion
+import { Component } from '@angular/core';
+
+import { HeroArena, HeroService, Hero } from './heroes/shared';
+
+@Component({
+ selector: 'toh-app',
+ template: '{{heroes | json}} ',
+ providers: [HeroArena, HeroService]
+})
+export class AppComponent {
+ heroes: Hero[] = [];
+
+ constructor(private heroArena: HeroArena) { }
+
+ ngOnInit() {
+ this.heroArena.getParticipants().subscribe(heroes => this.heroes = heroes);
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/hero-arena.service.ts b/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/hero-arena.service.ts
index 7b08875fdc..42bc51f9e9 100644
--- a/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/hero-arena.service.ts
+++ b/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/hero-arena.service.ts
@@ -1,3 +1,4 @@
+// #docplaster
// #docregion
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
@@ -10,5 +11,11 @@ export class HeroArena {
constructor(
private heroService: HeroService,
private http: Http) {}
+ // #enddocregion example
+ // test harness
+ getParticipants() {
+ return this.heroService.getHeroes();
+ }
+ // #docregion example
}
// #enddocregion example
diff --git a/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/index.ts b/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/index.ts
index 27516fdedd..e8ba54b540 100644
--- a/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/index.ts
+++ b/public/docs/_examples/style-guide/ts/07-04/app/heroes/shared/index.ts
@@ -1,3 +1,4 @@
// #docregion
export * from './hero.model';
export * from './hero.service';
+export * from './hero-arena.service';
diff --git a/public/docs/_examples/style-guide/ts/09-01/app/app.component.ts b/public/docs/_examples/style-guide/ts/09-01/app/app.component.ts
new file mode 100644
index 0000000000..089468ba0a
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/09-01/app/app.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+import { HeroButtonComponent } from './heroes/shared/hero-button/hero-button.component';
+
+@Component({
+ selector: 'sg-app',
+ template: ' ',
+ directives: [HeroButtonComponent]
+})
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/09-01/app/heroes/shared/hero-button/hero-button.component.ts b/public/docs/_examples/style-guide/ts/09-01/app/heroes/shared/hero-button/hero-button.component.ts
index 5624b82b25..cc69810dee 100644
--- a/public/docs/_examples/style-guide/ts/09-01/app/heroes/shared/hero-button/hero-button.component.ts
+++ b/public/docs/_examples/style-guide/ts/09-01/app/heroes/shared/hero-button/hero-button.component.ts
@@ -4,7 +4,7 @@ import { Component, OnInit } from '@angular/core';
// #docregion example
@Component({
selector: 'toh-hero-button',
- template: `OK`
+ template: `OK `
})
export class HeroButtonComponent implements OnInit {
ngOnInit() {
diff --git a/public/docs/_examples/style-guide/ts/app/app.component.html b/public/docs/_examples/style-guide/ts/app/app.component.html
new file mode 100644
index 0000000000..0680b43f9c
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/app/app.component.html
@@ -0,0 +1 @@
+
diff --git a/public/docs/_examples/style-guide/ts/app/app.component.ts b/public/docs/_examples/style-guide/ts/app/app.component.ts
new file mode 100644
index 0000000000..33448ba587
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/app/app.component.ts
@@ -0,0 +1,65 @@
+import { Component } from '@angular/core';
+import { RouteConfig, ROUTER_DIRECTIVES } from '@angular/router-deprecated';
+
+import { AppComponent as S0101 } from '../01-01/app/app.component';
+import { AppComponent as S0207 } from '../02-07/app/app.component';
+import { AppComponent as S0208 } from '../02-08/app/app.component';
+import { AppComponent as S0301 } from '../03-01/app/app.component';
+import { AppComponent as S0302 } from '../03-02/app/app.component';
+import { AppComponent as S0303 } from '../03-03/app/app.component';
+import { AppComponent as S0304 } from '../03-04/app/app.component';
+import { AppComponent as S0305 } from '../03-05/app/app.component';
+import { AppComponent as S0306 } from '../03-06/app/app.component';
+import { AppComponent as S0410 } from '../04-10/app/app.component';
+import { AppComponent as S0414 } from '../04-14/app/app.component';
+import { AppComponent as S0502 } from '../05-02/app/app.component';
+import { AppComponent as S0503 } from '../05-03/app/app.component';
+import { AppComponent as S0504 } from '../05-04/app/app.component';
+import { AppComponent as S0512 } from '../05-12/app/app.component';
+import { AppComponent as S0513 } from '../05-13/app/app.component';
+import { AppComponent as S0514 } from '../05-14/app/app.component';
+import { AppComponent as S0515 } from '../05-15/app/app.component';
+import { AppComponent as S0516 } from '../05-16/app/app.component';
+import { AppComponent as S0517 } from '../05-17/app/app.component';
+import { AppComponent as S0601 } from '../06-01/app/app.component';
+import { AppComponent as S0603 } from '../06-03/app/app.component';
+import { AppComponent as S0701 } from '../07-01/app/app.component';
+import { AppComponent as S0703 } from '../07-03/app/app.component';
+import { AppComponent as S0704 } from '../07-04/app/app.component';
+import { AppComponent as S0901 } from '../09-01/app/app.component';
+
+@Component({
+ selector: 'my-app',
+ templateUrl: 'app/app.component.html',
+ directives: [ROUTER_DIRECTIVES]
+})
+@RouteConfig([
+ { path: '/01-01', name: '01-01', component: S0101 },
+ { path: '/02-07', name: '02-07', component: S0207 },
+ { path: '/02-08', name: '02-08', component: S0208 },
+ { path: '/03-01', name: '03-01', component: S0301 },
+ { path: '/03-02', name: '03-02', component: S0302 },
+ { path: '/03-03', name: '03-03', component: S0303 },
+ { path: '/03-04', name: '03-04', component: S0304 },
+ { path: '/03-05', name: '03-05', component: S0305 },
+ { path: '/03-06', name: '03-06', component: S0306 },
+ { path: '/04-10', name: '04-10', component: S0410 },
+ { path: '/04-14', name: '04-14', component: S0414 },
+ { path: '/05-02', name: '05-02', component: S0502 },
+ { path: '/05-03', name: '05-03', component: S0503 },
+ { path: '/05-04', name: '05-04', component: S0504 },
+ { path: '/05-12', name: '05-12', component: S0512 },
+ { path: '/05-13', name: '05-13', component: S0513 },
+ { path: '/05-14', name: '05-14', component: S0514 },
+ { path: '/05-15', name: '05-15', component: S0515 },
+ { path: '/05-16', name: '05-16', component: S0516 },
+ { path: '/05-17', name: '05-17', component: S0517 },
+ { path: '/06-01', name: '06-01', component: S0601 },
+ { path: '/06-03', name: '06-03', component: S0603 },
+ { path: '/07-01', name: '07-01', component: S0701 },
+ { path: '/07-03', name: '07-03', component: S0703 },
+ { path: '/07-04', name: '07-04', component: S0704 },
+ { path: '/09-01', name: '09-01', component: S0901 },
+
+])
+export class AppComponent { }
diff --git a/public/docs/_examples/style-guide/ts/app/hero-data.ts b/public/docs/_examples/style-guide/ts/app/hero-data.ts
new file mode 100644
index 0000000000..001af65e85
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/app/hero-data.ts
@@ -0,0 +1,11 @@
+export class HeroData {
+ createDb() {
+ let heroes = [
+ { id: '1', name: 'Windstorm' },
+ { id: '2', name: 'Bombasto' },
+ { id: '3', name: 'Magneta' },
+ { id: '4', name: 'Tornado' }
+ ];
+ return {heroes};
+ }
+}
diff --git a/public/docs/_examples/style-guide/ts/app/main.ts b/public/docs/_examples/style-guide/ts/app/main.ts
new file mode 100644
index 0000000000..5eec1d8f88
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/app/main.ts
@@ -0,0 +1,17 @@
+import { bootstrap } from '@angular/platform-browser-dynamic';
+import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
+import { XHRBackend, HTTP_PROVIDERS } from '@angular/http';
+import { HashLocationStrategy, LocationStrategy } from '@angular/common';
+import { InMemoryBackendService, SEED_DATA } from 'angular2-in-memory-web-api';
+import 'rxjs/add/operator/map';
+
+import { HeroData } from './hero-data';
+import { AppComponent } from './app.component';
+
+bootstrap(AppComponent, [
+ ROUTER_PROVIDERS,
+ HTTP_PROVIDERS,
+ { provide: LocationStrategy, useClass: HashLocationStrategy },
+ { provide: XHRBackend, useClass: InMemoryBackendService },
+ { provide: SEED_DATA, useClass: HeroData }
+ ]);
diff --git a/public/docs/_examples/style-guide/ts/index.html b/public/docs/_examples/style-guide/ts/index.html
index 820bf59a96..44a280de44 100644
--- a/public/docs/_examples/style-guide/ts/index.html
+++ b/public/docs/_examples/style-guide/ts/index.html
@@ -17,6 +17,7 @@
+
diff --git a/public/docs/_examples/style-guide/ts/systemjs.custom.js b/public/docs/_examples/style-guide/ts/systemjs.custom.js
new file mode 100644
index 0000000000..4909a1d1a2
--- /dev/null
+++ b/public/docs/_examples/style-guide/ts/systemjs.custom.js
@@ -0,0 +1,44 @@
+(function(global) {
+ // extra local packages
+ var packageNames = [
+ '01-01',
+ '02-07',
+ '02-08',
+ '03-01',
+ '03-02',
+ '03-03',
+ '03-04',
+ '03-05', '03-05/app/shared', '03-05/app/shared/spinner', '03-05/app/shared/toast',
+ '03-06', '03-06/app/shared', '03-06/app/shared/spinner', '03-06/app/shared/toast',
+ '04-10', '04-10/app/shared', '04-10/app/+heroes', '04-10/app/shared/spinner', '04-10/app/shared/toast',
+ '04-10/app/shared/filter-text', '04-10/app/shared/modal', '04-10/app/shared/nav',
+ '04-14',
+ '05-02',
+ '05-03',
+ '05-04',
+ '05-12',
+ '05-13',
+ '05-14',
+ '05-15', '05-15/app/heroes/shared',
+ '05-16',
+ '05-17',
+ '06-01',
+ '06-03',
+ '07-01',
+ '07-03',
+ '07-04', '07-04/app/heroes/shared',
+ '09-01'
+ ];
+
+ var packages = {};
+ packageNames.forEach(function(pkgName) {
+ packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
+ });
+
+ var config = {
+ packages: packages
+ }
+
+ System.config(config);
+
+})(this);
diff --git a/public/docs/_examples/styleguide/js/app.js b/public/docs/_examples/styleguide/js/app.js
index a590cd7ed7..7ac0466c2c 100644
--- a/public/docs/_examples/styleguide/js/app.js
+++ b/public/docs/_examples/styleguide/js/app.js
@@ -4,11 +4,9 @@
var AppComponent = ng
// #docregion component
.Component({
- selector: 'my-app'
- })
+ selector: 'my-app',
// #enddocregion
// #docregion view
- .View({
template: 'My First Angular 2 App '
})
// #enddocregion
diff --git a/public/docs/_examples/styleguide/js/index.html b/public/docs/_examples/styleguide/js/index.html
index 789b38144a..27c8930e59 100644
--- a/public/docs/_examples/styleguide/js/index.html
+++ b/public/docs/_examples/styleguide/js/index.html
@@ -6,9 +6,19 @@
-
-
+
+
+
+
+
+
+
+
+
+
foo2
diff --git a/public/docs/_examples/styleguide/ts/app.ts b/public/docs/_examples/styleguide/ts/app.ts
index e6d0d92e49..68eb2b4348 100644
--- a/public/docs/_examples/styleguide/ts/app.ts
+++ b/public/docs/_examples/styleguide/ts/app.ts
@@ -1,13 +1,13 @@
// #docregion
// #docregion import
-import {Component, View, bootstrap} from '@angular/angular2';
+import { Component } from '@angular/core';
+import { bootstrap } from '@angular/platform-browser-dynamic';
+
// #enddocregion
// #docregion class-w-annotations
@Component({
- selector: 'my-app'
-})
-@View({
+ selector: 'my-app',
template: 'My First Angular 2 App '
})
// #docregion class
@@ -18,4 +18,4 @@ class AppComponent { }
// #docregion bootstrap
bootstrap(AppComponent);
// #enddocregion
-// #enddocregion
\ No newline at end of file
+// #enddocregion
diff --git a/public/docs/_examples/systemjs.config.js b/public/docs/_examples/systemjs.config.js
index 56d5f61e5f..0cdf7d40bc 100644
--- a/public/docs/_examples/systemjs.config.js
+++ b/public/docs/_examples/systemjs.config.js
@@ -32,15 +32,20 @@
'upgrade',
];
- // Add package entries for angular packages
- ngPackageNames.forEach(function(pkgName) {
+ // Individual files (~300 requests):
+ function packIndex(pkgName) {
+ packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
+ }
- // Bundled (~40 requests):
+ // Bundled (~40 requests):
+ function packUmd(pkgName) {
packages['@angular/'+pkgName] = { main: pkgName + '.umd.js', defaultExtension: 'js' };
+ };
- // Individual files (~300 requests):
- //packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
- });
+ var setPackageConfig = System.packageWithIndex ? packIndex : packUmd;
+
+ // Add package entries for angular packages
+ ngPackageNames.forEach(setPackageConfig);
var config = {
map: map,
diff --git a/public/docs/_examples/testing/ts/tsconfig.1.json b/public/docs/_examples/testing/ts/tsconfig.1.json
index 6ee6719cb3..062cf1bcb4 100644
--- a/public/docs/_examples/testing/ts/tsconfig.1.json
+++ b/public/docs/_examples/testing/ts/tsconfig.1.json
@@ -9,10 +9,5 @@
"removeComments": false,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
- },
- "exclude": [
- "node_modules",
- "typings/main",
- "typings/main.d.ts"
- ]
+ }
}
diff --git a/public/docs/_examples/toh-6/ts/app/dashboard.component.ts b/public/docs/_examples/toh-6/ts/app/dashboard.component.ts
index 6070e76eb6..988d51fee9 100644
--- a/public/docs/_examples/toh-6/ts/app/dashboard.component.ts
+++ b/public/docs/_examples/toh-6/ts/app/dashboard.component.ts
@@ -16,17 +16,17 @@ export class DashboardComponent implements OnInit {
heroes: Hero[] = [];
constructor(
- private _router: Router,
- private _heroService: HeroService) {
+ private router: Router,
+ private heroService: HeroService) {
}
ngOnInit() {
- this._heroService.getHeroes()
+ this.heroService.getHeroes()
.then(heroes => this.heroes = heroes.slice(1,5));
}
gotoDetail(hero: Hero) {
let link = ['HeroDetail', { id: hero.id }];
- this._router.navigate(link);
+ this.router.navigate(link);
}
}
diff --git a/public/docs/_examples/toh-6/ts/app/hero-detail.component.ts b/public/docs/_examples/toh-6/ts/app/hero-detail.component.ts
index 7b2889e592..73ea334fc2 100644
--- a/public/docs/_examples/toh-6/ts/app/hero-detail.component.ts
+++ b/public/docs/_examples/toh-6/ts/app/hero-detail.component.ts
@@ -1,10 +1,11 @@
// #docplaster
// #docregion
-import { Component, Input, Output, OnInit, EventEmitter } from '@angular/core';
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
import { RouteParams } from '@angular/router-deprecated';
import { Hero } from './hero';
import { HeroService } from './hero.service';
+
@Component({
selector: 'my-hero-detail',
templateUrl: 'app/hero-detail.component.html',
@@ -17,16 +18,16 @@ export class HeroDetailComponent implements OnInit {
navigated = false; // true if navigated here
constructor(
- private _heroService: HeroService,
- private _routeParams: RouteParams) {
+ private heroService: HeroService,
+ private routeParams: RouteParams) {
}
// #docregion ngOnInit
ngOnInit() {
- if (this._routeParams.get('id') !== null) {
- let id = +this._routeParams.get('id');
+ if (this.routeParams.get('id') !== null) {
+ let id = +this.routeParams.get('id');
this.navigated = true;
- this._heroService.getHero(id)
+ this.heroService.getHero(id)
.then(hero => this.hero = hero);
} else {
this.navigated = false;
@@ -36,7 +37,7 @@ export class HeroDetailComponent implements OnInit {
// #enddocregion ngOnInit
// #docregion save
save() {
- this._heroService
+ this.heroService
.save(this.hero)
.then(hero => {
this.hero = hero; // saved hero, w/ id if new
@@ -45,9 +46,11 @@ export class HeroDetailComponent implements OnInit {
.catch(error => this.error = error); // TODO: Display error message
}
// #enddocregion save
+ // #docregion goback
goBack(savedHero: Hero = null) {
this.close.emit(savedHero);
if (this.navigated) { window.history.back(); }
}
+ // #enddocregion goback
}
diff --git a/public/docs/_examples/toh-6/ts/app/hero.service.ts b/public/docs/_examples/toh-6/ts/app/hero.service.ts
index b4b0854141..fa1e1ac4e4 100644
--- a/public/docs/_examples/toh-6/ts/app/hero.service.ts
+++ b/public/docs/_examples/toh-6/ts/app/hero.service.ts
@@ -1,7 +1,7 @@
// #docplaster
// #docregion
import { Injectable } from '@angular/core';
-import { Http, Headers } from '@angular/http';
+import { Headers, Http } from '@angular/http';
// #docregion rxjs
import 'rxjs/add/operator/toPromise';
diff --git a/public/docs/_examples/toh-6/ts/app/heroes.component.ts b/public/docs/_examples/toh-6/ts/app/heroes.component.ts
index 71ce908c60..df3f26c69b 100644
--- a/public/docs/_examples/toh-6/ts/app/heroes.component.ts
+++ b/public/docs/_examples/toh-6/ts/app/heroes.component.ts
@@ -21,11 +21,11 @@ export class HeroesComponent implements OnInit {
error: any;
constructor(
- private _router: Router,
- private _heroService: HeroService) { }
+ private router: Router,
+ private heroService: HeroService) { }
getHeroes() {
- this._heroService
+ this.heroService
.getHeroes()
.then(heroes => this.heroes = heroes)
.catch(error => this.error = error); // TODO: Display error message
@@ -46,7 +46,7 @@ export class HeroesComponent implements OnInit {
// #docregion delete
delete(hero: Hero, event: any) {
event.stopPropagation();
- this._heroService
+ this.heroService
.delete(hero)
.then(res => {
this.heroes = this.heroes.filter(h => h !== hero);
@@ -66,6 +66,6 @@ export class HeroesComponent implements OnInit {
}
gotoDetail() {
- this._router.navigate(['HeroDetail', { id: this.selectedHero.id }]);
+ this.router.navigate(['HeroDetail', { id: this.selectedHero.id }]);
}
}
diff --git a/public/docs/_examples/tsconfig.json b/public/docs/_examples/tsconfig.json
index 302417ff3d..fd1d10190d 100644
--- a/public/docs/_examples/tsconfig.json
+++ b/public/docs/_examples/tsconfig.json
@@ -9,10 +9,5 @@
"removeComments": false,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
- },
- "exclude": [
- "node_modules",
- "typings/main",
- "typings/main.d.ts"
- ]
+ }
}
diff --git a/public/docs/_examples/typings.json b/public/docs/_examples/typings.json
index ab3d27d712..7e0e18568d 100644
--- a/public/docs/_examples/typings.json
+++ b/public/docs/_examples/typings.json
@@ -1,7 +1,7 @@
{
- "ambientDependencies": {
+ "globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160317120654",
- "jasmine": "registry:dt/jasmine#2.2.0+20160412134438",
+ "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
"node": "registry:dt/node#4.0.0+20160509154515"
}
}
diff --git a/public/docs/_examples/wallaby.js b/public/docs/_examples/wallaby.js
index 2648c2c3aa..28053a11fe 100644
--- a/public/docs/_examples/wallaby.js
+++ b/public/docs/_examples/wallaby.js
@@ -8,6 +8,7 @@ module.exports = function () {
files: [
// System.js for module loading
{pattern: 'node_modules/systemjs/dist/system.js', instrument: false},
+ {pattern: 'systemjs.config.js', instrument: false},
// Polyfills
{pattern: 'node_modules/core-js/client/shim.min.js', instrument: false},
@@ -38,86 +39,39 @@ module.exports = function () {
bootstrap: function (wallaby) {
wallaby.delayStart();
- systemConfig();
- Promise.all([
- System.import('@angular/core/testing'),
- System.import('@angular/platform-browser-dynamic/testing')
- ])
- .then(function (providers) {
- var testing = providers[0];
- var testingBrowser = providers[1];
-
- testing.setBaseTestProviders(
- testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
- testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS);
-
-
- // Load all spec files
- return Promise.all(wallaby.tests.map(function (specFile) {
- return System.import(specFile);
- }));
- })
- .then(function () {
- wallaby.start();
- })
- .catch(function (e) {
- setTimeout(function () {
- throw e;
- }, 0);
+ System.config({
+ packageWithIndex: true // sadly, we can't use umd packages (yet?)
});
- //////////////////////////
- // SystemJS configuration.
- function systemConfig() {
+ System.import('systemjs.config.js')
+ .then(function () {
+ return Promise.all([
+ System.import('@angular/core/testing'),
+ System.import('@angular/platform-browser-dynamic/testing')
+ ])
+ })
+ .then(function (providers) {
+ var testing = providers[0];
+ var testingBrowser = providers[1];
- // map tells the System loader where to look for things
- var map = {
- 'app': 'app',
+ testing.setBaseTestProviders(
+ testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
+ testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS);
- '@angular': 'node_modules/@angular',
- 'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
- 'rxjs': 'node_modules/rxjs'
- };
-
- // packages tells the System loader how to load when no filename and/or no extension
- var packages = {
- 'app': { main: 'main.js', defaultExtension: 'js' },
- 'rxjs': { defaultExtension: 'js' },
- 'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
- };
-
- var ngPackageNames = [
- 'common',
- 'compiler',
- 'core',
- 'http',
- 'platform-browser',
- 'platform-browser-dynamic',
- 'router',
- 'router-deprecated',
- 'upgrade',
- ];
-
- // Add package entries for angular packages
- ngPackageNames.forEach(function(pkgName) {
-
- // Bundled (~40 requests): DOESN'T WORK IN WALLABY OR KARMA (YET?)
- // packages['@angular/'+pkgName] = { main: pkgName + '.umd.js', defaultExtension: 'js' };
-
- // Individual files (~300 requests):
- packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
+ // Load all spec files
+ return Promise.all(wallaby.tests.map(function (specFile) {
+ return System.import(specFile);
+ }));
+ })
+ .then(function () {
+ wallaby.start();
+ })
+ .catch(function (e) {
+ setTimeout(function () {
+ throw e;
+ }, 0);
});
-
- var config = {
- map: map,
- packages: packages
- }
-
- System.config(config);
- }
- //////////////////
}
};
-
};
diff --git a/public/docs/_examples/webpack/ts/package.webpack.json b/public/docs/_examples/webpack/ts/package.webpack.json
index 618e1867ec..0e58f8680c 100644
--- a/public/docs/_examples/webpack/ts/package.webpack.json
+++ b/public/docs/_examples/webpack/ts/package.webpack.json
@@ -41,7 +41,7 @@
"style-loader": "^0.13.1",
"ts-loader": "^0.8.1",
"typescript": "^1.8.9",
- "typings": "^0.7.12",
+ "typings": "^1.0.4",
"webpack": "^1.12.14",
"webpack-dev-server": "^1.14.1",
"webpack-merge": "^0.9.0"
diff --git a/public/docs/_examples/webpack/ts/typings.1.json b/public/docs/_examples/webpack/ts/typings.1.json
index ab3d27d712..7e0e18568d 100644
--- a/public/docs/_examples/webpack/ts/typings.1.json
+++ b/public/docs/_examples/webpack/ts/typings.1.json
@@ -1,7 +1,7 @@
{
- "ambientDependencies": {
+ "globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160317120654",
- "jasmine": "registry:dt/jasmine#2.2.0+20160412134438",
+ "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
"node": "registry:dt/node#4.0.0+20160509154515"
}
}
diff --git a/public/docs/_includes/styleguide/_code-examples.jade b/public/docs/_includes/styleguide/_code-examples.jade
index 47dbb56c1b..102b7694c1 100644
--- a/public/docs/_includes/styleguide/_code-examples.jade
+++ b/public/docs/_includes/styleguide/_code-examples.jade
@@ -113,11 +113,9 @@ include ../../../_includes/_util-fns
var AppComponent = ng
// #docregion component
.Component({
- selector: 'my-app'
- })
+ selector: 'my-app',
// #enddocregion component
// #docregion view
- .View({
template: 'My First Angular 2 App '
})
// #enddocregion view
@@ -139,13 +137,13 @@ include ../../../_includes/_util-fns
// #docplaster more code here
// #docregion import,twoparts
- import {Component, View, bootstrap} from 'angular2/angular2';
+ import { Component } from '@angular/core';
+ import { bootstrap } from '@angular/platform-browser-dynamic';
+
// #enddocregion twoparts, import
@Component({
- selector: 'my-app'
- })
- @View({
- template: 'My first Angular 2 App '
+ selector: 'my-app',
+ template: 'My first Angular 2 App '
})
class AppComponent {
}
diff --git a/public/docs/js/latest/cheatsheet.jade b/public/docs/js/latest/cheatsheet.jade
index 694e02b0d2..c623d14bcd 100644
--- a/public/docs/js/latest/cheatsheet.jade
+++ b/public/docs/js/latest/cheatsheet.jade
@@ -1,6 +1,4 @@
- var base = current.path[4] ? '.' : './guide';
-.banner.grid-fluid
- p.text-body.c10 This cheat sheet is provisional and may change. Angular 2 is currently in Beta.
article(class="l-content-small grid-fluid docs-content")
.cheatsheet
diff --git a/public/docs/ts/latest/cookbook/component-relative-paths.jade b/public/docs/ts/latest/cookbook/component-relative-paths.jade
index 66f90c1ffd..814e790e58 100644
--- a/public/docs/ts/latest/cookbook/component-relative-paths.jade
+++ b/public/docs/ts/latest/cookbook/component-relative-paths.jade
@@ -3,7 +3,7 @@ include ../_util-fns
:marked
## Write *Component-Relative* URLs to component templates and style files
- Our components ofter refer to external template and style files.
+ Our components often refer to external template and style files.
We identify those files with a URL in the `templateUrl` and `styleUrls` properties of the `@Component` metadata
as seen here:
@@ -12,7 +12,7 @@ include ../_util-fns
By default, we *must* specify the full path back to the application root.
We call this an ***absolute path*** because it is *absolute* with respect to the application root.
- There are two problems with an *absolute path*
+ There are two problems with an *absolute path*:
1. We have to remember the full path back to the application root.
diff --git a/public/docs/ts/latest/cookbook/dependency-injection.jade b/public/docs/ts/latest/cookbook/dependency-injection.jade
index 0521de5d60..f80528c08d 100644
--- a/public/docs/ts/latest/cookbook/dependency-injection.jade
+++ b/public/docs/ts/latest/cookbook/dependency-injection.jade
@@ -63,7 +63,11 @@ include ../_util-fns
* [useFactory - the *factory provider*](#usefactory)
* [useFactory - *工厂供应商*](#usefactory)
+
+ [Define providers with object literals](#object-literals)
+ [使用对象文本定义供应商] (#object-literals)
+
[Provider token alternatives](#tokens)
[供应商可选令牌](#tokens)
@@ -929,6 +933,23 @@ a(id='usefactory')
该函数从`HeroService`获取英雄参赛者,从中取`2`个作为亚军,并把他们的名字拼接起来。请到[在线例子](/resources/live-examples/cb-dependency-injection/ts/plnkr.html)查看全部原代码。
+
+.l-main-section
+:marked
+ ## Define providers with object literals
+
+ ## 使用对象文本定义供应商
+
+:marked
+ In the previous section we learned to use the `provide` method to customize how dependencies are created.
+
+ Instead of calling the `provide` function, we can configure providers with _object literals_.
+ It's a slightly more concise syntax and we don't have to import the `provide` function.
+
+ Here's a set of providers that we saw earlier, re-written with object literals.
+
++makeExample('cb-dependency-injection/ts/app/hero-of-the-month-literals.component.ts','providers-using-object-literals')(format='.')
+
a(id="tokens")
.l-main-section
:marked
diff --git a/public/docs/ts/latest/guide/dependency-injection.jade b/public/docs/ts/latest/guide/dependency-injection.jade
index c5a32936f7..8580a4c9f9 100644
--- a/public/docs/ts/latest/guide/dependency-injection.jade
+++ b/public/docs/ts/latest/guide/dependency-injection.jade
@@ -915,18 +915,26 @@ code-example(format, language="html").
// #docregion providers-provide-3
// Skip for Dart, where the provide() function won't pass type checking.
:marked
- The [provide](../api/core/provide-function.html) function is the more common, friendlier way to create a `Provider`:
+ The [provide](../api/core/provide-function.html) function is the typical way to create a `Provider`:
+
+ [provide](../api/core/provide-function.html)函数是典型的用来创建`Provider`的方法:
- [provide](../api/core/provide-function.html)函数是创建`Provider`的更通用、友好的方式。
// #enddocregion providers-provide-3
+makeExample('dependency-injection/ts/app/providers.component.ts','providers-3')
// #docregion providers-provide-4-1
// Modified for Dart.
+
:marked
- In both approaches — `Provider` class and `provide` function —
- we supply two arguments.
+ Or we can declare a provider in an _object literal_ and skip the `provide` function.
- 在这两种方式里——在`Provider`类和`provide`函数中——我们提供了两个参数。
+ 或者我们可以在一个_对象文本_声明一个提供商,并忽略`provide`函数。
+
++makeExample('dependency-injection/ts/app/providers.component.ts','providers-3a')
+
+:marked
+ Pick the syntax that you prefer. They all do the same thing.
+
+ In each syntax, we supply two types of values.
// #enddocregion providers-provide-4-1
// #docregion providers-provide-4-2
:marked
@@ -945,6 +953,7 @@ code-example(format, language="html").
第二个是一个供应商定义对象。
我们可以把它看做一个指导如何创建依赖值的*配方*。
有很多方式创建依赖值…… 也有很多方式可以写配方。
+
// #docregion providers-alternative-1
:marked
@@ -974,7 +983,7 @@ code-example(format, language="html").
这个日志服务从一个注入进来的`UserService`中取得用户,`UserService`通常也会在应用级被注入。
// #enddocregion providers-alternative-2
-+makeExample('dependency-injection/ts/app/providers.component.ts','EvenBetterLogger')
++makeExample('dependency-injection/ts/app/providers.component.ts','EvenBetterLogger')(format='.')
// #docregion providers-alternative-3
:marked
Configure it like we did `BetterLogger`.
diff --git a/public/docs/ts/latest/guide/npm-packages.jade b/public/docs/ts/latest/guide/npm-packages.jade
index 4997eafd28..fa7b402a26 100644
--- a/public/docs/ts/latest/guide/npm-packages.jade
+++ b/public/docs/ts/latest/guide/npm-packages.jade
@@ -5,9 +5,17 @@ include ../_util-fns
These packages are maintained and installed with the Node Package Manager (npm ).
.l-sub-section
:marked
- Don't have npm?
- Get it now
- because we're going to use it now and repeatedly throughout this documentation.
+ Node.js and npm are essential to Angular 2 development.
+
+
+ Get it now if it's not already installed on your machine
+
+ **Verify that you are running node `v5.x.x` and npm `3.x.x`**
+ by running `node -v` and `npm -v` in a terminal/console window.
+ Older and newer versions produce errors.
+
+ We recommend [nvm](https://github.com/creationix/nvm) for managing multiple versions of node and npm.
+
:marked
We recommend a comprehensive starter-set of packages as specified in the `dependencies` and `devDependencies`
sections of the QuickStart
diff --git a/public/docs/ts/latest/guide/style-guide.jade b/public/docs/ts/latest/guide/style-guide.jade
index 3d7b567924..dcd58e4278 100644
--- a/public/docs/ts/latest/guide/style-guide.jade
+++ b/public/docs/ts/latest/guide/style-guide.jade
@@ -315,9 +315,10 @@ a(href="#toc") 回到顶部
.s-rule.do
:marked
- **Do** use dashes to separate words.
+ **Do** use dashes to separate words in the descriptive name.
+
+ **坚持** 在描述性名字里面,使用横杠来分隔单词。
- **坚持**使用横杠来分隔单词。
.s-rule.do
:marked
@@ -327,27 +328,40 @@ a(href="#toc") 回到顶部
.s-rule.do
:marked
- **Do** use consistent names for all components following a pattern that describes the component's feature then its type. A recommended pattern is `feature.type.ts`.
+ **Do** use consistent type names for all components following a pattern that describes the component's feature then its type. A recommended pattern is `feature.type.ts`.
+
+ **坚持**对所有组件使用一致的类型命名规则,遵循这个模式:先描述组件的特性,再描述它的类型。推荐的模式为`feature.type.ts`。
- **坚持**对所有组件使用一致的命名规则,遵循这个模式:先描述组件的特性,再描述它的类型。推荐的模式为`feature.type.ts`。
.s-rule.do
:marked
- **Do** use conventional suffixes for the types including `*.service.ts`, `*.component.ts`, `*.pipe.ts`. Invent other suffixes where desired, but take care in having too many.
+ **Do** use conventional type names including `.service`, `.component`, `.pipe`.
+ Invent additional type names if you must but take care not to create too many.
+
+ **坚持**使用惯用的后缀来描述类型,比如`*.service`、`*.component`、`*.pipe`。
+ 创建额外的类型名字,但你必须注意不要创建太多。
- **坚持**使用惯用的后缀来描述类型,比如`*.service.ts`、`*.component.ts`、`*.pipe.ts`。如果你愿意,也可以发明其它后缀,但注意不要太多。
.s-why
:marked
- **Why?** Provides a consistent way to quickly identify what is in the file.
+ **Why?** Type names provide a consistent way to quickly identify what is in the file.
+
+ **为何?**类型名字提供一致的方法来快速的识别文件是什么。
- **为何?**提供一致的方法来快速的识别文件是什么。
.s-why
:marked
- **Why?** Provides a consistent way to quickly find a specific file using an editor or IDE's fuzzy search techniques.
+ **Why?** Make it easy to find a specific file type using an editor or IDE's fuzzy search techniques.
- **为何?**提供一致的方法,利用编辑器或者IDE的模糊搜索功能,快速找到特定文件。
+ **为何?** 可以让我们利用编辑器或者IDE的模糊搜索功能,很容易的找到特定文件。
+
+.s-why
+ :marked
+ **Why?** Unabbreviated type names such as `.service` are descriptive and unambiguous.
+ Abbreviations such as `.srv`, `.svc`, and `.serv` can be confusing.
+
+ **为何?** 没有被简写的类型名字比如`.service`很有描述性,不含糊。
+ 简写可能造成混淆,比如`.srv`, `.svc`, 和 `.serv`。
.s-why.s-why-last
:marked
@@ -1054,10 +1068,10 @@ a(href="#toc") 回到顶部
**为何?**TypeScript工具让识别私有或公有属性和方法变得很简单。
-+makeExample('style-guide/ts/03-04/app/shared/toast/toast.service.avoid.ts', 'example', 'app/shared/toast/toast.service.ts')(avoid=1)
++makeExample('style-guide/ts/03-04/app/shared/toast.service.avoid.ts', 'example', 'app/shared/toast.service.ts')(avoid=1)
:marked
-+makeExample('style-guide/ts/03-04/app/shared/toast/toast.service.ts', 'example', 'app/shared/toast/toast.service.ts')
++makeExample('style-guide/ts/03-04/app/shared/toast.service.ts', 'example', 'app/shared/toast.service.ts')
:marked
a(href="#toc") Back to top
@@ -1959,7 +1973,7 @@ a(href="#toc") 回到顶部
+makeExample('style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.ts', 'example', 'app/heroes/hero-button/hero-button.component.ts')(avoid=1)
:marked
-+makeExample('style-guide/ts/05-03/app/heroes/shared/hero-button/hero-button.component.avoid.html', '', 'app/heroes/hero-button/hero-button.component.html')(avoid=1)
++makeExample('style-guide/ts/05-03/app/app.component.avoid.html', '', 'app/app.component.html')(avoid=1)
:marked
+makeTabs(
diff --git a/public/docs/ts/latest/guide/typescript-configuration.jade b/public/docs/ts/latest/guide/typescript-configuration.jade
index affa2b2928..ac4705a272 100644
--- a/public/docs/ts/latest/guide/typescript-configuration.jade
+++ b/public/docs/ts/latest/guide/typescript-configuration.jade
@@ -76,7 +76,7 @@ a(id="typings")
Many libraries include their definition files in their npm packages where both the TypeScript compiler and editors
can find them. Angular is one such library.
- Peek into the `node_modules/angular2/` folder of any Angular application to see several `...d.ts` files that describe parts of Angular.
+ Peek into the `node_modules/@angular/core/` folder of any Angular application to see several `...d.ts` files that describe parts of Angular.
**We need do nothing to get *typings* files for library packages which include *d.ts* files — as all Angular packages do.**
@@ -118,10 +118,10 @@ code-example(format="").
code-example(format="").
npm run typings list
:marked
- The following command installs the typings file for the Jasmine test library and updates the `typings.config`
- so we that we get it automatically the next time.
+ The following command installs or updates the typings file for the Jasmine test library from the *DefinitelyTyped* repository
+ and updates the `typings.config` so we that we get it automatically the next time we install typings.
code-example(format="").
- npm run typings -- install jasmine --ambient --save
+ npm run typings -- install dt~jasmine --save --global
.l-sub-section
:marked
The [–– option](https://docs.npmjs.com/cli/run-script) is important;
@@ -129,43 +129,3 @@ code-example(format="").
Learn about the features of the *typings* tool at its [site on github](https://github.com/typings/typings/blob/master/README.md).
-:marked
- ### Typing file collisions
-
- The TypeScript compiler does not tolerate redefinition of a type. For example, it throws an error if it's given two definitions for
- the `Promise` type.
-
- Double definitions are common. In fact, the `typings` tool deliberately creates
- duplicate sets of typings (for reasons best explained elsewhere).
- Look in the project structure for the *typings folder* where we should find something like:
-.filetree
- .file typings
- .children
- .file browser
- .children
- .file ambient
- .children
- .file core-js
- .children
- .file index.d.ts
- .file ...
-
- .children
- .file main
- .children
- .file ambient
- .children
- .file core-js
- .children
- .file index.d.ts
- .file ...
- .children
- .file browser.d.ts
- .file main.d.ts
-:marked
- The `core-js` typings are duplicated and the `browser.d.ts` and `main.d.ts` have overlapping content.
-
- We must tell the compiler to ignore one or the other.
- We removed the `main` set from consideration in the `exclude` section of our `tsconfig.json` file:
-+makeJson('quickstart/ts/tsconfig.1.json', {paths: 'exclude'}, 'tsconfig.json (exclude)')(format=".")
-:marked
diff --git a/public/docs/ts/latest/guide/upgrade.jade b/public/docs/ts/latest/guide/upgrade.jade
index 95ee9314b9..a58d298998 100644
--- a/public/docs/ts/latest/guide/upgrade.jade
+++ b/public/docs/ts/latest/guide/upgrade.jade
@@ -864,12 +864,12 @@ code-example(format="").
project, which contains metadata about the type definitions we've installed:
code-example(format="").
- npm run typings install jquery -- --save --ambient
- npm run typings install angular -- --save --ambient
- npm run typings install angular-route -- --save --ambient
- npm run typings install angular-resource -- --save --ambient
- npm run typings install angular-mocks -- --save --ambient
- npm run typings install jasmine -- --save --ambient
+ npm run typings install jquery -- --save --global
+ npm run typings install angular -- --save --global
+ npm run typings install angular-route -- --save --global
+ npm run typings install angular-resource -- --save --global
+ npm run typings install angular-mocks -- --save --global
+ npm run typings install jasmine -- --save --global
:marked
In `index.html`, let's now enable SystemJS. Add a couple of `