Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度的指令问题_Angular_Typescript_Primeng - Fatal编程技术网

Angular 角度的指令问题

Angular 角度的指令问题,angular,typescript,primeng,Angular,Typescript,Primeng,我有一个下拉菜单,效果很好。如果用户选择一个选项,然后按下键盘上的“删除”按钮或“退格”按钮,下拉列表中的值将被清除(这非常有效。然而,我正在尝试创建一个指令,它将做同样的事情,但我无法让它工作。有人能告诉我如何正确创建此指令的正确方向吗 提前多谢 这是我的密码: 这是一个指令代码 @Directive({ selector: '[customDropDown]' }) export class CustomDropDownDirective { @Output() updatePr

我有一个下拉菜单,效果很好。如果用户选择一个选项,然后按下键盘上的“删除”按钮或“退格”按钮,下拉列表中的值将被清除(这非常有效。然而,我正在尝试创建一个指令,它将做同样的事情,但我无法让它工作。有人能告诉我如何正确创建此指令的正确方向吗

提前多谢

这是我的密码:


这是一个指令代码

@Directive({
  selector: '[customDropDown]'
})
export class CustomDropDownDirective {

  @Output() updateProperty: EventEmitter<any> = new EventEmitter();

  constructor(private el: ElementRef, private control : NgControl) { }

    @HostListener('keyup',['$event'])onkeyup(event:any){
    if(event.keyCode === 8){
       let currentElementName = this.el.nativeElement.value;
      this.control.control.setValue('');
      this.updateProperty.emit(false);
    }
  }
}
@指令({
选择器:“[customDropDown]”
})
导出类CustomDropDownDirective{

@输出()updateProperty:EventEmitter我刚刚更新了你的示例。还有一件事,你忘了在
app.component.ts中包含你的指令,这就是他不在演示中工作的原因。

你可以使用keypress这个东西来帮助你捕捉keypress上的事件。可以这样做

@HostListener('document:keypress', ['$event'])
  handleKeyboardEvent(event: KeyboardEvent) { 
    this.key = event.key;

    // inside this you can catch your key code
    // then check is it backspace or delete keycode 
    // if it is then remove data from selector with help of NgControl.
  }

别忘了从@angular/core导入你的NgControl。

还要添加
event.keyCode===46
,这是删除键。@SaddamPojee是的,你是对的,我忘了提到这个键码,因为我举了他的例子,所以我错过了它。
@HostListener('document:keypress', ['$event'])
  handleKeyboardEvent(event: KeyboardEvent) { 
    this.key = event.key;

    // inside this you can catch your key code
    // then check is it backspace or delete keycode 
    // if it is then remove data from selector with help of NgControl.
  }