J'ai un champ de saisie de texte comme celui-ci
<input type="text" class="form-control" [inputTextFilter]="A" [ngModel]="name">
et ma directive est:
import { Directive, Input, HostListener } from '@angular/core';
@Directive({
selector: '[inputTextFilter]'
})
export class InputTextFilterDirective {
@Input('inputTextFilter') params: string;
@HostListener('keypress', ['$event'])
onKeyUp(event: KeyboardEvent) {
console.log('got parameters: '+this.params);
}
}
et j'ai créé une directive appelée "inputTextFilter" à laquelle je veux passer le paramètre "A". Mon paramètre passé s'affiche toujours comme non défini.
Essaye ça.
import {Directive, SimpleChanges} from '@angular/core';
@Directive({
selector: '[inputTextFilter]'
})
export class MyDirective {
@Input('inputTextFilter') params: string;
constructor(){}
ngOnInit(){
console.log(this.params)
}
}
Essayez comme ceci dans la directive:
import {Directive, Input, ElementRef} from 'angular2/core';
@Directive({
selector: '[inputTextFilter]'
})
class FocusDirective {
@Input() inputTextFilter: any;
protected ngOnChanges() {
console.log('inputTextFilter', this.inputTextFilter);
}
}
Dans l'espoir que cela aide quelqu'un d'autre ... le problème est dans le modèle.
Lorsque je passe l'entrée en tant que [myDirective] = "A", le A est interprété comme une variable non définie. Puisque je voulais passer la lettre A, j'aurais dû dire [myDirective] = "'A'"