<!DOCTYPE html>
<html>
<head>
<title>Angular 2 Component - ViewChild</title>
<!-- 1. Load libraries -->
<script src="https://unpkg.com/systemjs@0.19.38/dist/system.src.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="system.config.js"></script>
</head>
<!-- 3. Display the application -->
<body>
<app-root>Loading...</app-root>
<script>
System.import('app');
</script>
</body>
</html>
var angularVersion = '2.0.0';
System.config({
baseUrl: '/',
paths: {
'unpkg:*': 'https://unpkg.com/*'
}
});
System.config({
transpiler: 'typescript',
typescriptOptions: { emitDecoratorMetadata: true },
meta: {
'*': {
deps: [ 'zone.js', 'reflect-metadata' ]
}
}
});
System.config({
packageConfigPaths: [
"unpkg:@*/*/package.json"
],
map: {
'@angular/core': 'unpkg:@angular/core@'+angularVersion,
'@angular/compiler': 'unpkg:@angular/compiler@'+angularVersion,
'@angular/common': 'unpkg:@angular/common@'+angularVersion,
'@angular/platform-browser': 'unpkg:@angular/platform-browser@'+angularVersion,
'@angular/platform-browser-dynamic': 'unpkg:@angular/platform-browser-dynamic@'+angularVersion,
'rxjs': 'unpkg:rxjs@5.0.0-beta.12',
'zone.js': 'unpkg:zone.js@0.6.25',
'reflect-metadata': 'unpkg:reflect-metadata@0.1.3',
"crypto": "@empty"
},
packages: {
'app': {
defaultExtension: 'ts',
main: './main.ts'
}
}
});
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { bootstrap, platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component.ts';
import { AlertComponent } from './alert.component';
@NgModule({
imports: [
BrowserModule
],
declarations: [
AppComponent,
AlertComponent
],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
platformBrowserDynamic().bootstrapModule(AppModule);
import { Component, ViewChild } from '@angular/core';
import { AlertComponent } from './alert.component';
@Component({
selector: 'app-root',
template: `
<app-alert>My alert</app-alert>
<button (click)="showAlert()">Show Alert</button>`
})
export class AppComponent {
@ViewChild(AlertComponent) alert: AlertComponent;
showAlert() {
this.alert.show();
}
}
import { Component } from '@angular/core';
@Component({
selector: 'app-alert',
template: `
<div *ngIf="!hidden">
<div class="backdrop" (click)="hide()"></div>
<div class="modal">
<ng-content></ng-content>
<div>
<button (click)="hide()">OK</button>
</div>
</div>
</div>
`,
styles: [`
.modal {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background-color: white;
border: 1px solid #ddd;
padding: 1rem;
}
.backdrop {
position: absolute;
background: rgba(0, 0, 0, 0.1);
top: 0;
bottom: 0;
right: 0;
left: 0;
}
`]
})
export class AlertComponent {
hidden = true;
show() {
this.hidden = false;
}
hide() {
this.hidden = true;
}
}