web-dev-qa-db-fra.com

Passer le paramètre à Angular 4 sur l'entrée

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.

10
TSG

Essaye ça.

Mise à jour:

import {Directive, SimpleChanges} from '@angular/core';

@Directive({
  selector: '[inputTextFilter]'
})
export class MyDirective {
  @Input('inputTextFilter') params: string;
  constructor(){}
  ngOnInit(){
     console.log(this.params)
  }
}
12
Gary

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);
    }
}
3
Chandru

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'"

0
TSG