Javascript 当我手动单击链接到动态数据列表的输入时,会显示值。当我以编程方式单击时,数据列表值don';t显示

Javascript 当我手动单击链接到动态数据列表的输入时,会显示值。当我以编程方式单击时,数据列表值don';t显示,javascript,angular,datalist,Javascript,Angular,Datalist,我编写了一个角度应用程序,并使用动态数据列表 <input id="inputCodePostalId" type="text" (keyup)="findPostalCode($event)" placeholder="Code Postal" formControlName="codePostal" list="codePostalId" /> <

我编写了一个角度应用程序,并使用动态数据列表

<input id="inputCodePostalId" type="text"  (keyup)="findPostalCode($event)" placeholder="Code Postal" formControlName="codePostal" list="codePostalId" />
    <datalist id="codePostalId">
        <option *ngFor="let code of postalCodeList" [value]="code">{{code}}</option>
    </datalist>
例如,当我在输入中输入595时,会发出请求,之后,当我手动单击输入时,会显示datalist值,但当我以编程方式如上所述单击时(请参见setTimeout函数),不会显示datalist值

更新 我在输入上添加了一个click侦听器

<input id="inputCodePostalId" type="text" (click)="method1();"................
and 
  method1() {
    console.log('ca passe CLICK');
  }

“click”和“keyup”是两个不同的事件,因此这可能是问题所在。我不明白您的意思输入正在侦听
keyup
事件,并且在超时时您正在触发
click
事件。我怀疑
findPostalCode
是否会从超时事件触发,因为它没有侦听
单击事件。尝试在超时时触发一个
keyup
事件,或者在输入端监听一个
click
事件如果我很理解你的评论,我更新了提议,但它没有改变什么(请参阅第一篇文章中的更新)。我可以看到日志被触发,也就是说,
findPostalCode
没有监听click事件,因此它不会被触发。更改
findPostalCode
以收听
单击
事件,或者让
elem
触发
keyup
事件。这可能会为您澄清正在发生的事情
<input id="inputCodePostalId" type="text" (click)="method1();"................
and 
  method1() {
    console.log('ca passe CLICK');
  }
  findPostalCode(event: any) {
    let text = event.target.value;
    if (event.which != 16 && text != null && text.length > 2) {
      this.postalCodeList = [];
      const event1 = new Event('click');
      const element = document.getElementById("inputCodePostalId");
      this.produitImmobilierService.getPostalCodes(text).subscribe( 
                 result => {this.postalCodeList = result; 
                 setTimeout( function () {element.dispatchEvent(event1); },   
                                         500)});
    }
  }