Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| /* tslint:disable:no-console  */
 | |
| import {Component, Directive, EventEmitter, NgModule} from '@angular/core';
 | |
| 
 | |
| // #docregion component-input
 | |
| @Component({
 | |
|   selector: 'app-bank-account',
 | |
|   inputs: ['bankName', 'id: account-id'],
 | |
|   template: `
 | |
|     Bank Name: {{ bankName }}
 | |
|     Account Id: {{ id }}
 | |
|   `
 | |
| })
 | |
| export class BankAccountComponent {
 | |
|   bankName: string|null = null;
 | |
|   id: string|null = null;
 | |
| 
 | |
|   // this property is not bound, and won't be automatically updated by Angular
 | |
|   normalizedBankName: string|null = null;
 | |
| }
 | |
| 
 | |
| @Component({
 | |
|   selector: 'app-my-input',
 | |
|   template: `
 | |
|     <app-bank-account
 | |
|       bankName="RBC"
 | |
|       account-id="4747">
 | |
|     </app-bank-account>
 | |
|   `
 | |
| })
 | |
| export class MyInputComponent {
 | |
| }
 | |
| // #enddocregion component-input
 | |
| 
 | |
| // #docregion component-output-interval
 | |
| @Directive({selector: 'app-interval-dir', outputs: ['everySecond', 'fiveSecs: everyFiveSeconds']})
 | |
| export class IntervalDirComponent {
 | |
|   everySecond = new EventEmitter<string>();
 | |
|   fiveSecs = new EventEmitter<string>();
 | |
| 
 | |
|   constructor() {
 | |
|     setInterval(() => this.everySecond.emit('event'), 1000);
 | |
|     setInterval(() => this.fiveSecs.emit('event'), 5000);
 | |
|   }
 | |
| }
 | |
| 
 | |
| @Component({
 | |
|   selector: 'app-my-output',
 | |
|   template: `
 | |
|     <app-interval-dir
 | |
|       (everySecond)="onEverySecond()"
 | |
|       (everyFiveSeconds)="onEveryFiveSeconds()">
 | |
|     </app-interval-dir>
 | |
|   `
 | |
| })
 | |
| export class MyOutputComponent {
 | |
|   onEverySecond() {
 | |
|     console.log('second');
 | |
|   }
 | |
|   onEveryFiveSeconds() {
 | |
|     console.log('five seconds');
 | |
|   }
 | |
| }
 | |
| // #enddocregion component-output-interval
 | |
| 
 | |
| @NgModule({
 | |
|   declarations: [BankAccountComponent, MyInputComponent, IntervalDirComponent, MyOutputComponent]
 | |
| })
 | |
| export class AppModule {
 | |
| }
 |