Html onChange on下拉列表不适用于窗体控件
我的下拉列表有问题。我有几个值在里面,喜欢使用选定的一个。这是我的代码,目前不起作用。Html onChange on下拉列表不适用于窗体控件,html,angular,typescript,angular10,Html,Angular,Typescript,Angular10,我的下拉列表有问题。我有几个值在里面,喜欢使用选定的一个。这是我的代码,目前不起作用。FormControll始终为空: app.component.html <custom-dropdown [formControl]="majorAreaCtrl" (onChange)="onChange()" [label]="'EXPERTS.MAJOR_AREAS'|translate"> <custom-dro
FormControll
始终为空:
app.component.html
<custom-dropdown [formControl]="majorAreaCtrl" (onChange)="onChange()" [label]="'EXPERTS.MAJOR_AREAS'|translate">
<custom-dropdown-item *ngFor="let area of areas" [value]="area.key">
{{ area }}
</custom-dropdown-item>
</custom-dropdown>
有人看到我的错误了吗?提前谢谢你 实际上不需要
onChange
侦听器(由[formControl]
绑定处理)。
但是,这需要自定义下拉列表组件实现接口
如果是这种情况,您应该能够通过订阅this.majorAreaCtrl.valueChanges
Observable(例如)来响应更改。
尽管没有自定义组件,但这是一个很好的解决方案
如果您的组件没有实现ControlValueAccessor
,我(以及这里的许多其他人)将很乐意帮助您实现它。我相信值会在下一个刻度上发生变化,因此理论上:setTimeout(()=>{console.log(this.majorAreaCtrl.value);},0)谢谢你的回答。我认为它没有发挥应有的作用。当我记录this.majorAreaCtrl.valuesChanges
时,我的控制台中没有任何内容。或者我的意思是不超过EventEmitter\uu isScalar:false,observators:Array(0),closed:false,isStopped:false,hasError:false,…}
this.majorAreaCtrl.valueChanges
实际上是一个可观察的,所以为了对它的更改做出反应,您需要订阅它(在某个时刻)。为了快速测试它是否工作,请尝试this.majorAreaCtrl.valueChanges.subscribe(console.log)
。这将记录每次可观察到的“发射”值。
export class ExpertsComponent implements OnInit {
readonly majorAreas = MajorArea
readonly areas = Object.values(this.majorAreas)
readonly majorAreaCtrl = new FormControl()
ngOnInit(): void {
console.log(this.majorAreas, this.allExperts)
}
onChange() {
console.log(this.majorAreaCtrl.value)
}
}