diff --git a/aio/content/examples/lifecycle-hooks/e2e/src/app.e2e-spec.ts b/aio/content/examples/lifecycle-hooks/e2e/src/app.e2e-spec.ts
index 45422afe34..54b5e4e012 100644
--- a/aio/content/examples/lifecycle-hooks/e2e/src/app.e2e-spec.ts
+++ b/aio/content/examples/lifecycle-hooks/e2e/src/app.e2e-spec.ts
@@ -86,7 +86,7 @@ describe('Lifecycle hooks', () => {
const parentEle = element(by.tagName('after-view-parent'));
const buttonEle = parentEle.element(by.tagName('button')); // Reset
const commentEle = parentEle.element(by.className('comment'));
- const logEles = parentEle.all(by.css('h4 ~ div'));
+ const logEles = parentEle.all(by.css('h3 ~ div'));
const childViewInputEle = parentEle.element(by.css('app-child-view input'));
let logCount: number;
@@ -113,7 +113,7 @@ describe('Lifecycle hooks', () => {
const parentEle = element(by.tagName('after-content-parent'));
const buttonEle = parentEle.element(by.tagName('button')); // Reset
const commentEle = parentEle.element(by.className('comment'));
- const logEles = parentEle.all(by.css('h4 ~ div'));
+ const logEles = parentEle.all(by.css('h3 ~ div'));
const childViewInputEle = parentEle.element(by.css('app-child input'));
let logCount = await logEles.count();
@@ -136,8 +136,8 @@ describe('Lifecycle hooks', () => {
const inputEle = element(by.css('spy-parent input'));
const addHeroButtonEle = element(by.cssContainingText('spy-parent button', 'Add Hero'));
const resetHeroesButtonEle = element(by.cssContainingText('spy-parent button', 'Reset Heroes'));
- const heroEles = element.all(by.css('spy-parent div[appSpy'));
- const logEles = element.all(by.css('spy-parent h4 ~ div'));
+ const heroEles = element.all(by.css('spy-parent div p'));
+ const logEles = element.all(by.css('spy-parent h3 ~ div'));
expect(await heroEles.count()).toBe(2, 'should have two heroes displayed');
expect(await logEles.count()).toBe(2, 'should have two log entries');
@@ -156,18 +156,19 @@ describe('Lifecycle hooks', () => {
it('should support "spy counter"', async () => {
const updateCounterButtonEle = element(by.cssContainingText('counter-parent button', 'Update'));
const resetCounterButtonEle = element(by.cssContainingText('counter-parent button', 'Reset'));
- const textEle = element(by.css('counter-parent app-counter > div'));
- const logEles = element.all(by.css('counter-parent h4 ~ div'));
+ const textEle = element(by.css('counter-parent app-counter p'));
+ const logEles = element.all(by.css('counter-parent .info .log'));
expect(await textEle.getText()).toContain('Counter = 0');
- expect(await logEles.count()).toBe(2, 'should start with two log entries');
+ expect(await logEles.count()).toBe(3, 'should start with one change log and two lifecycle log entries, including reset');
await updateCounterButtonEle.click();
expect(await textEle.getText()).toContain('Counter = 1');
- expect(await logEles.count()).toBe(3, 'should now have 3 log entries');
+ expect(await logEles.count()).toBe(5, 'should now have 2 change log entries and 3 lifecycle log entries, including reset');
await resetCounterButtonEle.click();
expect(await textEle.getText()).toContain('Counter = 0');
- expect(await logEles.count()).toBe(7, 'should now have 7 log entries - 3 prev + 1 reset + 2 destroy + 1 init');
+ expect(await logEles.count()).toBe(8, 'should now have 8 log entries - 1 change log + 2 reset + 2 destroy + 3 init');
+
});
});
diff --git a/aio/content/examples/lifecycle-hooks/src/app/after-content-parent.component.ts b/aio/content/examples/lifecycle-hooks/src/app/after-content-parent.component.ts
index 18c055c824..dcfe5bacd1 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/after-content-parent.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/after-content-parent.component.ts
@@ -16,12 +16,13 @@ import { LoggerService } from './logger.service';
// #enddocregion parent-template
+ `
-
-- AfterContent Logs --
-
- {{msg}}
+
+
AfterContent Logs
+
+
{{msg}}
+
`,
- styles: ['.parent {background: burlywood}'],
providers: [LoggerService]
})
export class AfterContentParentComponent {
diff --git a/aio/content/examples/lifecycle-hooks/src/app/after-content.component.ts b/aio/content/examples/lifecycle-hooks/src/app/after-content.component.ts
index 6e25e24a52..9dfa1a7058 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/after-content.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/after-content.component.ts
@@ -9,9 +9,9 @@ import { LoggerService } from './logger.service';
selector: 'after-content',
// #docregion template
template: `
- -- projected content begins --
+ projected content begins
- -- projected content ends --
`
+ projected content ends
`
// #enddocregion template
+ `
-
AfterView
+
AfterView
-
+
-
-- AfterView Logs --
-
-
{{msg}}
+
+
AfterView Logs
+
+
{{msg}}
`,
- styles: ['.parent {background: burlywood}'],
providers: [LoggerService]
})
export class AfterViewParentComponent {
diff --git a/aio/content/examples/lifecycle-hooks/src/app/after-view.component.ts b/aio/content/examples/lifecycle-hooks/src/app/after-view.component.ts
index 7c25a513b5..7a1121776a 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/after-view.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/after-view.component.ts
@@ -9,9 +9,9 @@ import { LoggerService } from './logger.service';
selector: 'after-view',
// #docregion template
template: `
-
-- child view begins --
+
child view begins
-
-- child view ends --
`
+
child view ends
`
// #enddocregion template
+ `
Component Lifecycle Hooks
-
Peek-a-boo: (most) lifecycle hooks
-
Spy: directive with OnInit & OnDestroy
-
OnChanges
-
DoCheck
-
AfterViewInit & AfterViewChecked
-
AfterContentInit & AfterContentChecked
-
Counter: OnChanges + Spy directive
+
Lifecycle Hooks
+
Peek-a-boo: (most) lifecycle hooks
+
Spy: directive with OnInit & OnDestroy
+
OnChanges
+
DoCheck
+
AfterViewInit & AfterViewChecked
+
AfterContentInit & AfterContentChecked
+
Counter: OnChanges + Spy directive
back to top
+
back to top
+
back to top
+
back to top
+
back to top
+
back to top
+
diff --git a/aio/content/examples/lifecycle-hooks/src/app/child-view.component.ts b/aio/content/examples/lifecycle-hooks/src/app/child-view.component.ts
index 80664a9a09..5dbc1bf6c9 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/child-view.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/child-view.component.ts
@@ -3,7 +3,8 @@ import { Component } from '@angular/core';
// #docregion child-view
@Component({
selector: 'app-child-view',
- template: '
'
+ template: `
+
`
})
export class ChildViewComponent {
hero = 'Magneta';
diff --git a/aio/content/examples/lifecycle-hooks/src/app/child.component.ts b/aio/content/examples/lifecycle-hooks/src/app/child.component.ts
index d990c1c476..a63fa95c5d 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/child.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/child.component.ts
@@ -2,7 +2,8 @@ import { Component } from '@angular/core';
@Component({
selector: 'app-child',
- template: '
'
+ template: `
+
`
})
export class ChildComponent {
hero = 'Magneta';
diff --git a/aio/content/examples/lifecycle-hooks/src/app/counter-parent.component.ts b/aio/content/examples/lifecycle-hooks/src/app/counter-parent.component.ts
index 651ac5a34f..238eb384fc 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/counter-parent.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/counter-parent.component.ts
@@ -5,19 +5,18 @@ import { LoggerService } from './logger.service';
@Component({
selector: 'counter-parent',
template: `
-
-
Counter Spy
+
Counter Spy
-
-
+
+
-
+
-
-- Spy Lifecycle Hook Log --
-
{{msg}}
+
+
Spy Lifecycle Hook Log
+
{{msg}}
`,
- styles: ['.parent {background: gold;}'],
providers: [LoggerService]
})
export class CounterParentComponent {
@@ -38,7 +37,7 @@ export class CounterParentComponent {
}
reset() {
- this.logger.log('-- reset --');
+ this.logger.log('reset');
this.value = 0;
this.logger.tick();
}
diff --git a/aio/content/examples/lifecycle-hooks/src/app/counter.component.ts b/aio/content/examples/lifecycle-hooks/src/app/counter.component.ts
index 192cc06f7e..acbbc39056 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/counter.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/counter.component.ts
@@ -7,14 +7,13 @@ import {
@Component({
selector: 'app-counter',
template: `
-
- Counter = {{counter}}
+
Counter = {{counter}}
-
-- Counter Change Log --
-
{{chg}}
-
- `,
- styles: ['.counter {background: LightYellow; padding: 8px; margin-top: 8px}']
+
+
Counter Change Log
+
{{chg}}
+
+ `
})
export class MyCounterComponent implements OnChanges {
@Input() counter: number;
diff --git a/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.html b/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.html
index 42d8914977..c29c6fb7a7 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.html
+++ b/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.html
@@ -1,11 +1,9 @@
-
diff --git a/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.ts b/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.ts
index 9ac6a3b88a..09c572fbfe 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/do-check-parent.component.ts
@@ -5,8 +5,7 @@ import { Hero } from './hero';
@Component({
selector: 'do-check-parent',
- templateUrl: './do-check-parent.component.html',
- styles: ['.parent {background: Lavender}']
+ templateUrl: './do-check-parent.component.html'
})
export class DoCheckParentComponent {
hero: Hero;
diff --git a/aio/content/examples/lifecycle-hooks/src/app/do-check.component.ts b/aio/content/examples/lifecycle-hooks/src/app/do-check.component.ts
index 33b006d907..e5fddb063e 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/do-check.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/do-check.component.ts
@@ -7,17 +7,13 @@ import { Hero } from './hero';
@Component({
selector: 'do-check',
template: `
-
+
{{hero.name}} can {{power}}
-
-- Change Log --
-
{{chg}}
+
Change Log
+
{{chg}}
- `,
- styles: [
- '.hero {background: LightYellow; padding: 8px; margin-top: 8px}',
- 'p {background: Yellow; padding: 8px; margin-top: 8px}'
- ]
+ `
})
export class DoCheckComponent implements DoCheck {
@Input() hero: Hero;
diff --git a/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.html b/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.html
index a0fd404931..ca111df343 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.html
+++ b/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.html
@@ -1,13 +1,11 @@
-
-
{{title}}
+
{{title}}
+
+
+
+
-
-
+
-
-
-
-
+
+
+
diff --git a/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.ts b/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.ts
index fa47c6d935..8ed68f8f92 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/on-changes-parent.component.ts
@@ -6,7 +6,7 @@ import { OnChangesComponent } from './on-changes.component';
@Component({
selector: 'on-changes-parent',
templateUrl: './on-changes-parent.component.html',
- styles: ['.parent {background: Lavender;}']
+ styles: ['']
})
export class OnChangesParentComponent {
hero: Hero;
diff --git a/aio/content/examples/lifecycle-hooks/src/app/on-changes.component.ts b/aio/content/examples/lifecycle-hooks/src/app/on-changes.component.ts
index 78e601c5a4..132d5bbcf3 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/on-changes.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/on-changes.component.ts
@@ -7,17 +7,13 @@ import { Hero } from './hero';
@Component({
selector: 'on-changes',
template: `
-
+
{{hero.name}} can {{power}}
-
-- Change Log --
-
{{chg}}
+
Change Log
+
{{chg}}
- `,
- styles: [
- '.hero {background: LightYellow; padding: 8px; margin-top: 8px}',
- 'p {background: Yellow; padding: 8px; margin-top: 8px}'
- ]
+ `
})
export class OnChangesComponent implements OnChanges {
// #docregion inputs
diff --git a/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo-parent.component.ts b/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo-parent.component.ts
index 7edb57bfc3..a6f2f93ca7 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo-parent.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo-parent.component.ts
@@ -6,6 +6,7 @@ import { LoggerService } from './logger.service';
@Component({
selector: 'peek-a-boo-parent',
template: `
+
Peek-A-Boo
@@ -14,14 +15,14 @@ import { LoggerService } from './logger.service';
-
-
+
+
-
-- Lifecycle Hook Log --
-
{{msg}}
+
Lifecycle Hook Log
+
{{msg}}
+
`,
- styles: ['.parent {background: moccasin}'],
providers: [ LoggerService ]
})
export class PeekABooParentComponent {
diff --git a/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo.component.ts b/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo.component.ts
index 54df001f83..693afd5e1c 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/peek-a-boo.component.ts
@@ -19,8 +19,7 @@ import { PeekABooDirective } from './peek-a-boo.directive';
@Component({
selector: 'peek-a-boo',
- template: '
Now you see my hero, {{name}}
',
- styles: ['p {background: LightYellow; padding: 8px}']
+ template: '
Now you see my hero, {{name}}
'
})
// Don't HAVE to mention the Lifecycle Hook interfaces
// unless we want typing and tool support.
diff --git a/aio/content/examples/lifecycle-hooks/src/app/spy.component.html b/aio/content/examples/lifecycle-hooks/src/app/spy.component.html
index 96ca78194a..e371cc3bf6 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/spy.component.html
+++ b/aio/content/examples/lifecycle-hooks/src/app/spy.component.html
@@ -1,16 +1,19 @@
Spy Directive
-
+
+
-
-
-
- {{hero}}
+
+
+
+ {{hero}}
+
+
+
+
Spy Lifecycle Hook Log
+
{{msg}}
-
-
-- Spy Lifecycle Hook Log --
-
{{msg}}
diff --git a/aio/content/examples/lifecycle-hooks/src/app/spy.component.ts b/aio/content/examples/lifecycle-hooks/src/app/spy.component.ts
index 852788ffec..a8f82d4abf 100644
--- a/aio/content/examples/lifecycle-hooks/src/app/spy.component.ts
+++ b/aio/content/examples/lifecycle-hooks/src/app/spy.component.ts
@@ -6,10 +6,6 @@ import { LoggerService } from './logger.service';
@Component({
selector: 'spy-parent',
templateUrl: './spy.component.html',
- styles: [
- '.parent {background: khaki;}',
- '.heroes {background: LightYellow; padding: 0 8px}'
- ],
providers: [LoggerService]
})
export class SpyParentComponent {
@@ -31,7 +27,7 @@ export class SpyParentComponent {
this.logger.tick();
}
reset() {
- this.logger.log('-- reset --');
+ this.logger.log('reset');
this.heroes = [];
this.logger.tick();
}
diff --git a/aio/content/examples/lifecycle-hooks/src/assets/sample.css b/aio/content/examples/lifecycle-hooks/src/assets/sample.css
index df17c897c6..498464f91f 100644
--- a/aio/content/examples/lifecycle-hooks/src/assets/sample.css
+++ b/aio/content/examples/lifecycle-hooks/src/assets/sample.css
@@ -1,13 +1,61 @@
.parent {
- color: #666;
- margin: 14px 0;
- padding: 8px;
+ padding: 2rem 0;
}
-input {
- margin: 4px;
- padding: 4px;
+
+h2 {
+ text-align: center;
}
+
.comment {
- color: red;
+ color: #890000;
font-style: italic;
}
+
+.log {
+ background-color: #e4e4e4;
+ padding: .25rem;
+}
+
+.info {
+ background: #fff4f4;
+ padding: .75rem;
+ margin-top: 1rem;
+}
+
+p {
+ padding: .25rem;
+}
+
+a {
+ display: block;
+ padding-bottom: .5rem;
+ font-size: 1.1rem;
+ color: #264d73
+}
+
+a:hover {
+ text-decoration: none;
+}
+
+a[href="#top"] {
+ margin: 1rem 0;
+ padding: .5rem;
+ background-color: #264d73;
+ color: #fff;
+}
+
+a[href="#top"]:hover {
+ background-color:#eaeaea;
+ color: black;
+}
+
+a[href="#top"]:active {
+ background-color: black;
+ color: #eaeaea;
+}
+
+input {
+ margin-bottom: 1rem;
+ margin-top: .5rem;
+ font-size: 1rem;
+}