typescript HostBinding和HostListener

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript HostBinding和HostListener相关的知识,希望对你有一定的参考价值。

/*
@HostBinding and @HostListener are two decorators in Angular that can be really useful in custom directives.
@HostBinding lets you set properties on the element or component that hosts the directive, and
@HostListener lets you listen for events on the host element or component.
*/

// example directive that listen’s for a keydown event on the host and sets its text and border color
// to a random color from a set of a few available colors:

import {Directive,HostBinding,HostListener } from '@angular/core';

@Directive({
  selector: '[appRainbow]'
})
export class RainbowDirective {
  possibleColors = [
    'darksalmon', 'hotpink', 'lightskyblue', 'goldenrod', 'peachpuff',
    'mediumspringgreen', 'cornflowerblue', 'blanchedalmond', 'lightslategrey'
  ];

  @HostBinding('style.color') color: string;
  @HostBinding('style.border-color') borderColor: string;

  @HostListener('keydown') newColor() {
    const colorPick = Math.floor(Math.random() * this.possibleColors.length);

    this.color = this.borderColor = this.possibleColors[colorPick];
  }
}

// And the directive can be used on elements like this:
// <input type="text" appRainbow>


// Our Rainbow directive uses two @HostBinding decorators to define two class members,
// one that’s attached to the host’s style.color binding and the other to style.border-color.

// The @HostListner with the 'keydown' argument listens for the keydown event on the host. 
// We define a function attached to this decorator that changes the value of color and borderColor,
// and our changes get reflected on the host automatically.

以上是关于typescript HostBinding和HostListener的主要内容,如果未能解决你的问题,请参考以下文章

Angular12 - 使用 @HostBinding 或 @HostListener 而不是 `host` 元数据属性

markdown Criando uma diretiva:HostListener和HostBinding。

Angular 2 未检测到 @HostBinding 的更改

在 Angular2 的指令或组件中使 @HostBinding 和 @HostListener 有条件

角指令多个选择器和@HostListener,@HostBinding

利用 Angular Directive 和 @HostBinding 实现输入文本框随着键盘输入自动变色效果