typescript 角度 - 自定义指令

Posted

tags:

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

@Component({
  selector: 'app-paywall-directive-widget',
  templateUrl: './paywall-directive-widget.component.html',
  styleUrls: ['./paywall-directive-widget.component.css']
})
export class PaywallDirectiveWidgetComponent implements IWidget, AfterViewInit {
  widgetTitle = 'Paywall Directive';
  // declared Typescript interface inline
  linkList: {title: string, licenseLevel: number}[] = [];

  ngAfterViewInit(): void {
    for (let i = 0; i < 10; i++) {
      this.linkList.push({
        title: `Link # ${i + 1}`,
        licenseLevel: Math.floor((Math.random() * 3) + 1)
      });
    }
  }
}

// the component template
// <ul>
//   <li class="link" *ngFor="let item of linkList">
//     <a href="#" hsPaywall [requiredLicense]="item.licenseLevel" >{{item.title}}</a>
//   </li>
// </ul>

// The actual directive
@Directive({
  selector: '[appPaywall]'
})
export class PaywallDirective implements OnInit {
  @Input() requiredLicense: number;
  elm: HTMLElement;

  constructor(element: ElementRef, private ren: Renderer2, private cfg: LicenseConfigService) {
    if (element && element.nativeElement) {
      this.elm = element.nativeElement;
    }
  }

  // Programatically add HTML using Renderer2
  private checkLink(element: HTMLAnchorElement) {
    // check required license
    if (this.requiredLicense > this.cfg.currentLicense) {
      const span = this.ren.createElement('span');
      this.ren.addClass(span, 'paywall');
      span.title = 'Requires additional license purchase';
      const txt = this.ren.createText('

以上是关于typescript 角度 - 自定义指令的主要内容,如果未能解决你的问题,请参考以下文章

typescript 自定义结构型指令

typescript 自定义指令

typescript 属性指令 - 自定义

Vue.js 自定义指令使用 TypeScript 检测点击外部元素

正则表达式测试作为属性的指令实现错误 - 验证(打字稿+角度)

编写自定义指令以在 AngularJS (TypeScript) 中向 ng-options 添加工具提示