40 lines
		
	
	
		
			971 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			971 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Component, HostBinding, HostListener } from '@angular/core';
 | |
| 
 | |
| // #docregion
 | |
| @Component({
 | |
|   selector: 'hero-host',
 | |
|   template: `
 | |
|     <h1 [class.active]="active">Hero Host in Decorators</h1>
 | |
|     <div>Heading clicks: {{clicks}}</div>
 | |
|   `,
 | |
|   // Styles within (but excluding) the <hero-host> element
 | |
|   styles: ['.active {background-color: yellow;}']
 | |
| })
 | |
| export class HeroHostComponent {
 | |
|   // HostBindings to the <hero-host> element
 | |
|   @HostBinding() title = 'Hero Host in Decorators Tooltip';
 | |
|   @HostBinding('class.heading') headingClass = true;
 | |
| 
 | |
|   active = false;
 | |
|   clicks = 0;
 | |
| 
 | |
|   // HostListeners on the entire <hero-host> element
 | |
|   @HostListener('click')
 | |
|   clicked() {
 | |
|     this.clicks += 1;
 | |
|   }
 | |
| 
 | |
|   @HostListener('mouseenter', ['$event'])
 | |
|   enter(event: Event) {
 | |
|     this.active = true;
 | |
|     this.headingClass = false;
 | |
|   }
 | |
| 
 | |
|   @HostListener('mouseleave', ['$event'])
 | |
|   leave(event: Event) {
 | |
|     this.active = false;
 | |
|     this.headingClass = true;
 | |
|   }
 | |
| }
 | |
| // #enddocregion
 |