// #docplaster // #docregion import {Component, AfterContentChecked, AfterContentInit, ContentChild} from 'angular2/core'; import {LoggerService} from './logger.service'; ////////////////// @Component({ selector: 'my-child', template: '' }) export class ChildComponent { hero = 'Magneta'; } ////////////////////// @Component({ selector: 'after-content', // #docregion template template:`
{{comment}}
` }) // #docregion hooks export class AfterContentComponent implements AfterContentChecked, AfterContentInit { private _prevHero = ''; // Query for a CONTENT child of type `ChildComponent` @ContentChild(ChildComponent) contentChild: ChildComponent; // #enddocregion hooks constructor(private _logger:LoggerService){ this._logIt('AfterContent constructor'); } // #docregion hooks ngAfterContentInit() { // viewChild is set after the view has been initialized this._logIt('AfterContentInit'); this._doSomething(); } ngAfterContentChecked() { // viewChild is updated after the view has been checked if (this._prevHero === this.contentChild.hero) { this._logIt('AfterContentChecked (no change)'); } else { this._prevHero = this.contentChild.hero; this._logIt('AfterContentChecked'); this._doSomething(); } } // #enddocregion hooks comment = ''; // #docregion do-something // This surrogate for real business logic sets the `comment` private _doSomething() { this.comment = this.contentChild.hero.length > 10 ? "That's a long name" : ''; } private _logIt(method:string){ let vc = this.contentChild; let message = `${method}: ${vc ? vc.hero:'no'} child view` this._logger.log(message); } // #docregion hooks // ... } // #enddocregion hooks ////////////// @Component({ selector: 'after-content-parent', template: `