javascript - 单击编辑按钮时会添加额外的文本框,我们将不胜感激
问题描述
我给用户一个问题和 4 个选项(例如),我面临的问题是,当我编辑它时,它向我显示了更多选项(我提供的选项正在添加空文本框)..我只想向用户显示填充的文本框而不是空的文本框。editItem() 是函数名
export class StMultipleChoiceComponent implements OnInit {
public bodyField: Array<IFieldsMultipleChoice>;
public falseAnswer = [];
public option_multiple: Array<any>;
public newItem: boolean = false;
public formAdd: FormGroup;
public formImage: FormGroup;
public form_option_multiple: FormGroup;
public updateData: boolean = false;
public item: number;
public imagen: boolean = false;
public video: boolean = false;
public contenido: boolean = false;
public img: File;
public preoaderImg: string = '/assets/images/example.jpg';
public srcImgVideo: string = '/assets/images/NoSignal.jpg';
public items: FormArray;
public list_question: Array<any> = [];
@Input() key: any;
@Input() form: FormGroup;
@Input() values: any;
constructor(
private forms: FormBuilder
) { }
ngOnInit() {
if (this.values != null && this.values != undefined) {
this.list_question = this.values;
} else {
this.createList();
}
this.createForm();
// this.addItemFalse();
this.form.controls[this.key.key].setValue(this.list_question);
}
public addItem() {
console.log('nuevo item');
this.formAdd.reset();
this.preoaderImg = '/assets/images/example.jpg';
this.newItem = !this.newItem;
}
public itemCreate() {
return this.forms.group({
answerFalse: new FormControl('', Validators.compose([
Validators.required
]))
});
}
public createItem() {
console.log('data form', this.formAdd.value);
this.list_question.push(this.formAdd.value);
console.log('lista de pregunta', this.list_question);
this.resetForm();
this.formAdd.reset();
this.formImage.reset();
this.preoaderImg = '/assets/images/example.jpg';
}
private resetForm() {
const tam: number = this.list_question.length;
const delteArray: Array<any> = this.list_question[tam - 1].falseAnswer;
delteArray.forEach((item, index) => {
if (index !== 0) {
this.items = this.formAdd.get('falseAnswer') as FormArray;
this.items.removeAt(index);
}
});
}
private createForm() {
this.formAdd = this.forms.group({
name: new FormControl('', Validators.compose([
Validators.required
])),
correctAnswer: new FormControl('', Validators.compose([
Validators.required
])),
file: new FormControl('', Validators.compose([
])),
video: new FormControl('', Validators.compose([
])),
falseAnswer: this.forms.array([this.itemCreate()]),
type_multimedia: new FormControl('none', Validators.compose([]))
});
this.formImage = this.forms.group({
urlImage: new FormControl('', Validators.compose([
Validators.required
]))
});
}
private createList() {
this.bodyField = [
];
this.falseAnswer.push('');
}
public addItemFalse() {
this.items = this.formAdd.get('falseAnswer') as FormArray;
this.items.push(this.itemCreate());
}
public destroyFalseAnswer(item: number) {
this.items = this.formAdd.get('falseAnswer') as FormArray;
this.items.removeAt(item);
}
public destroyItem(item: number) {
this.list_question.splice(item, 1);
this.form.controls[this.key.key].setValue(this.list_question);
}
public editItem(item: number) {
this.formAdd.controls['name'].setValue(this.list_question[item].name);
this.formAdd.controls['correctAnswer'].setValue(this.list_question[item].correctAnswer);
this.formAdd.controls['file'].setValue(this.list_question[item].file)
this.preoaderImg = this.list_question[item].file;
const falseAnswer: Array<any> = this.list_question[item].falseAnswer;
falseAnswer.forEach((itemm, index) => {
if (index !== 0 && itemm.answerFalse != '') {
this.items = this.formAdd.get('falseAnswer') as FormArray;
this.items.push(this.itemCreate());
}
});
this.formAdd.controls['falseAnswer'].patchValue(this.list_question[item].falseAnswer);
console.log(this.formAdd.value);
this.updateData = true;
this.item = item;
this.newItem = !this.newItem;
}
public updateItem() {
this.list_question.splice(this.item, 1);
this.list_question.push(this.formAdd.value);
this.resetForm();
console.log('update list', this.list_question);
// this.newItem = !this.newItem;
this.updateData = !this.updateData;
this.formAdd.reset();
this.preoaderImg = '/assets/images/example.jpg'
this.newItem = !this.newItem;
}
}
<div class="form-group" formArrayName="falseAnswer" >
<ul>
<li *ngFor="let item of formAdd.controls['falseAnswer']['controls']; let i = index;">
<label class="col-form-label title" i18n="@@titleFalseAnswerMultipleChoice">Respuesta falsa</label>
<div class="row" [formGroupName]="i" *ngIf="i !== 0" style="margin-left: 0px;">
<input formControlName='answerFalse' [name]="i" [id]="i" type="text" class="form-control col-md-10">
<span class="col-md-2" style='cursor: pointer;'>
<i class="fas fa-trash-alt" (click)='destroyFalseAnswer(i)'></i>
</span>
</div>
<div *ngIf="i===0" [formGroupName]="i">
<input formControlName='answerFalse' [name]="i" [id]="i" type="text" class="form-control">
</div>
</li>
</ul>
</div>
<div class="col-md-12 mt-4 text-center">
<a style="color: white;" (click)='addItemFalse()' class="btn btn-back-celest mb-3" i18n="@@addFalseAnswerMultipleChoice">
Agregar respuesta falsa
</a>
</div>
解决方案
推荐阅读
- python - Python 3 - 解码光谱数据(Base64,IEEE754)
- python - PyCharm 类型提示警告
- mongodb - 在 mongodb 中提取特定数据
- java - Glassfish 连接到 MS SQL 服务器数据库
- javascript - loopback 3 setTimeout 奇怪的行为
- javascript - 如何将地理位置 lat lng 从函数传递到 React 中另一个函数的“ll”属性?
- django - 如何在 Django Rest Serializer 中屏蔽表字段
- arrays - 如何在本机反应中提取和添加退格键到 JSON 数据?
- jquery - 添加 noConflict() 后,Jquery 在 Wordpress 中不起作用
- c++ - 在抽象基类的不同实现中返回没有副本的类成员与返回本地对象