55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
// #docregion
|
|
import {Component} from '@angular/core';
|
|
import {PeekABooComponent} from './peek-a-boo.component';
|
|
import {LoggerService} from './logger.service';
|
|
|
|
@Component({
|
|
selector: 'peek-a-boo-parent',
|
|
template: `
|
|
<div class="parent">
|
|
<h2>Peek-A-Boo</h2>
|
|
|
|
<button (click)="toggleChild()">
|
|
{{hasChild ? 'Destroy' : 'Create'}} PeekABooComponent
|
|
</button>
|
|
<button (click)="updateHero()" [hidden]="!hasChild">Update Hero</button>
|
|
|
|
<peek-a-boo *ngIf="hasChild" [name]="heroName">
|
|
</peek-a-boo>
|
|
|
|
<h4>-- Lifecycle Hook Log --</h4>
|
|
<div *ngFor="let msg of hookLog">{{msg}}</div>
|
|
</div>
|
|
`,
|
|
styles: ['.parent {background: moccasin}'],
|
|
directives: [PeekABooComponent],
|
|
providers: [LoggerService]
|
|
})
|
|
export class PeekABooParentComponent {
|
|
|
|
hasChild = false;
|
|
hookLog: string[];
|
|
|
|
heroName = 'Windstorm';
|
|
private _logger: LoggerService;
|
|
|
|
constructor(logger: LoggerService) {
|
|
this._logger = logger;
|
|
this.hookLog = logger.logs;
|
|
}
|
|
|
|
toggleChild() {
|
|
this.hasChild = !this.hasChild;
|
|
if (this.hasChild) {
|
|
this.heroName = 'Windstorm';
|
|
this._logger.clear(); // clear log on create
|
|
}
|
|
this._logger.tick();
|
|
}
|
|
|
|
updateHero() {
|
|
this.heroName += '!';
|
|
this._logger.tick();
|
|
}
|
|
}
|