поэтому я создаю директиву для проверки значения некоторого поля (т.е. поля ввода).
То, что я пытаюсь выяснить, это:
@Directive({
selector: 'toi-text-field input'
})
export class InputCheckDirective {
@Input() color: string;
@Input() minValue: number;
constructor(private el: ElementRef) {
}
}
здесь вы можете видеть, что селектором является 'ввод текста в текстовое поле', который нацелен на элемент ввода в компоненте текстового поля.
Теперь я искал способ передачи этой строки селектора каким-либо образом (возможно, в качестве входного значения), чтобы я мог на более высоком уровне определить, какой элемент искать
например:
'article p'
так что директива будет искать элемент p в статье
ура!
мой элемент: (который инкапсулирован)
<toi-text-field> ... comp ... </toi-text-field>
<label
*ngIf="label"
class="toi-textfield__label"
for="{{id}}">
{{label}}
</label>
<input
[(ngModel)]="value"
[ngModelOptions]="modelOptions"
(ngModelChange)="onValueChange($event)"
type="text"
class="toi-textfield__input"
placeholder="{{placeholder}}"
[color]="color"
[minValue]="minValue"
[disabled]="disabled">
Моя директива:
здесь я установил цвет текста на красный, если значение в поле ввода меньше minValue
import { Directive, ElementRef, Input, HostListener, ViewChild, AfterViewInit } from '@angular/core';
@Directive({
selector: 'toi-text-field input'
})
export class InputCheckDirective {
@Input() color: string;
@Input() minValue: number;
constructor(private el: ElementRef) {
}
@HostListener('blur') onBlur(): void {
console.log('in blur');
console.log(this.el);
if (Number(this.el.nativeElement.attributes[4].value) < Number(this.minValue)) {
this.el.nativeElement.style.color = this.color;
} else {
this.el.nativeElement.style.color = '#000';
}
}
@HostListener('focus') onfocus():void {
}
}
Я не получаю сообщение об ошибке, поскольку я использую предопределенный селектор, но я искал способ сделать это универсальным для любого данного элемента, а не только для элемента ввода.