一个Button指令,该指令接受来指定单击限制,直到禁用该按钮为止。父组件可以通过以下方法监听事件,该事件将在达到点击次数限制时发出:@Input()@Output
import { Component, Input, Output, EventEmitter } from '@angular/core'; @Component({ selector: 'limited-button', template: `<button (click)="onClick()" [disabled]="disabled"> <ng-content></ng-content> </button>`, directives: [] }) export class LimitedButton { @Input() clickLimit: number; @Output() limitReached: EventEmitter<number> = new EventEmitter(); disabled: boolean = false; private clickCount: number = 0; onClick() { this.clickCount++; if (this.clickCount === this.clickLimit) { this.disabled= true; this.limitReached.emit(this.clickCount); } } }
使用Button指令并在达到点击限制时提醒消息的父组件:
import { Component } from '@angular/core'; import { LimitedButton } from './limited-button.component'; @Component({ selector: 'my-parent-component', template: `<limited-button [clickLimit]="2" (limitReached)="onLimitReached($event)"> You can only click me twice </limited-button>`, directives: [LimitedButton] }) export class MyParentComponent { onLimitReached(clickCount: number) { alert('Button disabled after ' + clickCount + ' clicks.'); } }