Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Javascript 角度4“;更改“;侦听器只触发一次_Javascript_Angular_Addeventlistener_Lifecycle - Fatal编程技术网

Javascript 角度4“;更改“;侦听器只触发一次

Javascript 角度4“;更改“;侦听器只触发一次,javascript,angular,addeventlistener,lifecycle,Javascript,Angular,Addeventlistener,Lifecycle,我有一个选择下拉列表,我从中绘制数据,根据选择进行更改。它将在第一次加载时正常启动,但在我重新加载或重定向之前不会再次更改 getLogs(){ document.getElementById("placeSelect").addEventListener('change', (e:any)=>{ this.placeService.getPlace(e.target.value).subscribe((e:any)=>{ this.p

我有一个选择下拉列表,我从中绘制数据,根据选择进行更改。它将在第一次加载时正常启动,但在我重新加载或重定向之前不会再次更改

    getLogs(){
  document.getElementById("placeSelect").addEventListener('change', (e:any)=>{
    this.placeService.getPlace(e.target.value).subscribe((e:any)=>{        
      this.personService.person(e.data.place.person.id).subscribe((e:any) => {
        this.logs = e.data.person.logs
      })
    })
  })

}
我称之为组件的“ngOnInit”,也许这就是问题所在?任何想法都会有帮助。

这可能会对你有所帮助

在Module.ts的导入中添加此代码

import { FormsModule } from '@angular/forms';
imports: [FormsModule]
 myModel(e: Event) {
    console.log(e);
  }
import { userInfo } from '../../component1';
内部组件。ts

import { FormsModule } from '@angular/forms';
imports: [FormsModule]
 myModel(e: Event) {
    console.log(e);
  }
import { userInfo } from '../../component1';
在Component.html中

   <select (ngModelChange)="myModel($event)" [ngModel]="mymodel">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">2</option>
</select>

1.
2.
2.

谢谢你的建议,但我还是设法解决了这个问题。最大的障碍是select在另一个组件中(我很抱歉没有提到),因此我必须将select信息导出到我的组件中,在该组件中显示信息

组件2.ts

import { FormsModule } from '@angular/forms';
imports: [FormsModule]
 myModel(e: Event) {
    console.log(e);
  }
import { userInfo } from '../../component1';
然后设置一个延迟,以便在两个组件完全加载后启动侦听。在我之前的版本中,它似乎已经开火了

ngOnInit() {
if(userInfo.place){
  this.getLogsfromPlace()
}    
setTimeout(()=>{
  this.startupUserInfo = userInfo
  document.getElementById("header").addEventListener('change', (e:any)=>{
  this._placeService.getPlace(userInfo.place).subscribe((e:any)=>{
    this._personService.person(e.data.place.person.id).subscribe((e:any) => {
      this.logs = e.data.person.logs
    })
  })
})  }, 3000);
}

非常感谢

忘记事件侦听器。在模板中,放置
select(change)=“onChangeHandler($event)”…>
,然后在组件中使用方法
onChangeHandler(event)
查看此链接将有助于我想我应该澄清一下。我道歉。但选择和显示数据的位置在两个单独的组件上。