如何检测下拉列表中的哪个项目被取消选择



我有一个下拉列表。在选择时,我正在创建新的表单控件,用户应该在其中填写表单,他知道哪种语言,熟练程度和经验时间。他可以按多个选项,但有时他可能会犯错误并取消选择某些内容。我也在这里和验证错误。当他选择例如两种形式时,它正在工作,它只适用于第二种形式,而不适用于第一种形式。有什么想法吗?

<h1>Set up you profile</h1>
<h1>Select the languages that you have knowledge of</h1>
<select class="selectingPL" #selectModel="ngModel" [(ngModel)]="selectedLevel" (change)="selected(i)" multiple>
<option *ngFor="let item of allProgrammingLanguages;let i = index" [ngValue]="item">
{{item}}
</option>
</select>

selectedLevel: any = 'C#';
// skills:FormGroup;
userForm: any;
arr = [];
alreadyInside = [];
isItConfirmed = false;
isItValid = false;
selected(event) {
this.arr = this.selectedLevel;

(<FormArray>this.userForm.get('skills')).push(this.addSkillFormGroup());
this.isItConfirmed = true;
for (let i = 0; i < this.arr.length; i++)
{
// console.log(this.userForm.get('skills'))
this.userForm.get('skills').valueChanges.subscribe(x => {
// console.log("*")
// console.log(this.arr.length)
console.log(this.userForm.get('skills').controls)
for (let i = 0; i < this.arr.length; i++) {
//
if(this.userForm.get('skills').controls[i].controls.experienceInYears.invalid)
if (x[i].experienceInYears == "" || x[i].proficiency == "") {
this.canProceed = false;
}

else if (x[i].experienceInYears !== "" || x[i].proficiency !== "") {
this.canProceed = true;
}
}
})
}
}

您可以为此创建第二个变量

private oldSelection: any;

在您的方法中selected这样做:

selected(event) {
if(!this.oldLevel && !this.arr){  //firstTime scenario
this.oldLevel = this.selectedLevel;
}else{
this.oldLevel = this.arr;
}
this.arr = this.selectedLevel;
//Your implementation
}

在这里,旧值和新值第一次将相同,下次,以前的值将分配给oldLevel,其他值将使用当前选择进行更新。

最新更新