66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
// #docplaster
|
|
// #docregion
|
|
// #docregion imports
|
|
import { Component, Inject, provide } from '@angular/core';
|
|
|
|
import { CarComponent } from './car/car.component';
|
|
import { HeroesComponent } from './heroes/heroes.component';
|
|
|
|
import { APP_CONFIG,
|
|
Config, CONFIG } from './app.config';
|
|
import { Logger } from './logger.service';
|
|
|
|
import { User, UserService } from './user.service';
|
|
// #enddocregion imports
|
|
import { InjectorComponent } from './injector.component';
|
|
import { TestComponent } from './test.component';
|
|
import { ProvidersComponent } from './providers.component';
|
|
|
|
@Component({
|
|
selector: 'my-app',
|
|
template: `
|
|
<h1>{{title}}</h1>
|
|
<my-car></my-car>
|
|
<my-injectors></my-injectors>
|
|
<my-tests></my-tests>
|
|
<h2>User</h2>
|
|
<p id="user">
|
|
{{userInfo}}
|
|
<button (click)='nextUser()'>Next User</button>
|
|
<p>
|
|
<my-heroes id="authorized" *ngIf="isAuthorized"></my-heroes>
|
|
<my-heroes id="unauthorized" *ngIf="!isAuthorized"></my-heroes>
|
|
`,
|
|
directives:[CarComponent, HeroesComponent,
|
|
InjectorComponent, TestComponent, ProvidersComponent],
|
|
// #docregion providers
|
|
providers: [
|
|
Logger,
|
|
UserService,
|
|
provide(APP_CONFIG, {useValue: CONFIG})
|
|
]
|
|
// #enddocregion providers
|
|
})
|
|
export class AppComponent {
|
|
title:string;
|
|
|
|
//#docregion ctor
|
|
constructor(
|
|
@Inject(APP_CONFIG) config:Config,
|
|
private userService: UserService) {
|
|
|
|
this.title = config.title;
|
|
}
|
|
// #enddocregion ctor
|
|
|
|
get isAuthorized() { return this.user.isAuthorized;}
|
|
nextUser() { this.userService.getNewUser(); }
|
|
get user() { return this.userService.user; }
|
|
|
|
get userInfo() {
|
|
return `Current user, ${this.user.name}, is `+
|
|
`${this.isAuthorized ? '' : 'not'} authorized. `;
|
|
}
|
|
}
|
|
// #enddocregion
|