【发布时间】:2019-11-15 04:45:31
【问题描述】:
我正在 Angular 7 上制作一个项目。它有一个带有下拉列表的表格。下拉列表包含各种语言。在特定行中选择一种语言时,它不应出现在后续行的下拉列表中。我该怎么做?
我尝试使用 splice() 从数组中删除选定的语言。但是当它删除对象时,它也不会显示在下拉列表中。
下面是html-(它是定义下拉列表的表格的行,并且该行是动态的)
<tr *ngFor="let field of fieldArray;let i = index">
<td><button class="btn" (click)="deleteFieldValue(i)"><i class="fa fa-trash"></i></button></td>
<td class="select">
<select #selectLang (change)="selected(selectLang.value,i)">
<option value="undefined" disabled>Select Language</option>
<option *ngFor="let lang of languageList" value={{lang.name}} [ngValue]="lang.name">{{lang.name}}</option>
</select>
</td>
<td>
<input id="fileUpload" name="fileUpload" type="file" name="upload_file" (change)=onFileChange($event)>
</td>
</tr>
以下是打字稿代码-
languageList = [{'name': "Dothraki"},{'name': "Japanese"},
{'name':"German"},{'name':"French"},{'name': "Spanish"}, {'name':
"Russian"}, {'name': "Italian"}];
selectedLang;
optionLang:string;
fieldArray: Array<any> = [];
newAttribute: any = {};
fileUploadName: any;
selected(lang:string,index:number){
console.log(lang);
// this.languageList.splice(index, 1);
for(let i =0; i< this.languageList.length; i++) {
if(this.languageList[i]['name'] === lang) {
this.languageList.splice(i,1);
break;
}
}
}
addFieldValue() {
this.fieldArray.push("hg");
this.newAttribute = {};
}
deleteFieldValue(index: number) {
this.fieldArray.splice(index, 1);
}
openFileBrowser(event:any){
event.preventDefault();
let element: HTMLElement = document.getElementById('fileUpload') as
HTMLElement;
element.click();
}
onFileChange(event:any){
let files = event.target.files;
this.fileUploadName = files[0].name;
console.log(files);
}
【问题讨论】:
标签: html angular typescript