簡體   English   中英

如何向 Angular Material datepicker 的所有實例添加指令?

[英]How can I add a directive to all instances of Angular Material datepicker?

我創建了一個自定義指令,用於檢查 angular 材料日期選擇器中的手動條目( 在此處的幫助下),它正在工作。

問:有沒有什么方法可以將該指令添加到項目中已經存在的所有實例中,而無需一一添加指令?

我的指令:

import { Directive, ElementRef, HostBinding, OnDestroy, OnInit } from '@angular/core';
import * as textMask from '../../../util/vanillaTextMask.js';

@Directive({
  selector: `fed-mask, [fed-mask], [fedMask]`
})
export class FedMaskDirective implements OnInit, OnDestroy {
  @HostBinding('class.fed-mask') compClass = true;


  fedMask = {
    mask: [
      new RegExp('\\d'),
      new RegExp('\\d'),
      '.',
      new RegExp('\\d'),
      new RegExp('\\d'),
      '.',
      new RegExp('\\d'),
      new RegExp('\\d'),
      new RegExp('\\d'),
      new RegExp('\\d')
    ],
    showMask: false,
    guide: false,
    placeholderChar: '_'
  };

  maskedInputController;

  constructor(private element: ElementRef) { }

  ngOnInit(): void {
    this.maskedInputController = textMask.maskInput({
      inputElement: this.element.nativeElement,
      ...this.fedMask
    });
  }

  ngOnDestroy() {
    this.maskedInputController.destroy();
  }
}

我目前如何使用它:

  <mat-form-field>
                <input
                  (dateChange)="DateChange($event)"
                  formControlName="Date"
                  [matDatepicker]="Datepicker"
                  matInput
                  placeholder="Date"
                  (click)="Datepicker.open()"
                  fedMask
                >
                <mat-datepicker-toggle matSuffix [for]="Datepicker"></mat-datepicker-toggle>
                <mat-datepicker #Datepicker></mat-datepicker>
                <mat-error *ngIf="form.get('Date').hasError('required')">
                  Error
                </mat-error>
              </mat-form-field>

期待:

有沒有辦法將fedMask指令添加到材料日期選擇器輸入的每個實例中,而無需在整個項目中每次使用時手動添加它?

您可以使用任何現有屬性作為選擇器,例如

@Directive({
  selector: "matDatepicker",
})

將針對具有matDatepicker屬性的每個元素。

另一個例子:

@Directive({selector: 'input:([matDatepicker])' })

將使用matDatepicker屬性定位每個input

標簽也是如此:

@Directive({
  selector: "mat-datepicker",
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM