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
 |