Javascript 找不到路径为&x27;文件->;0->;posted';
我需要用formArray创建一个动态表单 我单击Javascript 找不到路径为&x27;文件->;0->;posted';,javascript,angular,typescript,Javascript,Angular,Typescript,我需要用formArray创建一个动态表单 我单击添加项,必须为上传文件创建输入 在HTML中使用此代码: <div class="row m-auto col-md-12 pb-4"> <div class="col-md-2 col-xs-2 col-sm-2 col-lg-2 col-xl-2"> <button (click)="AddItem()" mat-stroked-button color="warn">
添加项
,必须为上传文件创建输入
在HTML中使用此代码:
<div class="row m-auto col-md-12 pb-4">
<div class="col-md-2 col-xs-2 col-sm-2 col-lg-2 col-xl-2">
<button (click)="AddItem()" mat-stroked-button color="warn">
<i class="la la-plus"></i>
<label class="pr-2 pl-2">
ایجاد فایل جدید
</label>
</button>
</div>
</div>
<mat-divider></mat-divider>
<div class="row m-auto col-md-12 pt-2">
<form [formGroup]="uploadFormGroup">
<div class="left row m-auto col-md-12 col-xs-12 col-sm-12 col-lg-12 col-xl-12" formArrayName="files"
*ngFor="let project of uploadFormGroup.get('files').controls; let i = index">
<ng-container [formGroupName]="i">
<div class="col-md-2 col-lg-2 col-xl-2 col-sm-12">
<mat-form-field class="mat-form-field-fluid" formControlName="postId" appearance="outline">
<mat-label>{{ 'POST.FILE_TYPE' | translate }}</mat-label>
<mat-select>
<mat-option *ngFor="let item of fileType | enumToArray" [value]="item">
{{ 'ENUM.FILE_TYPE.'+item | translate }}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="col-md-5 col-lg-5 col-xl-5 col-sm-5">
<mat-form-field appearance="outline">
<mat-label>{{ 'GENERAL.PHOTO' | translate }}</mat-label>
<mat-icon matSuffix>image</mat-icon>
<ngx-mat-file-input appearance="outline" formControlName="file" type=file
[placeholder]="'GENERAL.PHOTO' | translate">
</ngx-mat-file-input>
</mat-form-field>
</div>
<div class="row m-auto col-md-5 col-sm-5 col-lg-5 col-xl-5 col-lg-5 pb-4">
<div class="col-md-3 col-xs-3 col-sm-3 col-lg-3 col-xl-3">
<button mat-flat-button color="warn" (click)="removeItem(i)">حذف</button>
</div>
<div class="col-md-4 col-xs-4 col-sm-4 col-lg-4 col-xl-4">
<button mat-flat-button color="primary">پیش نمایش</button>
</div>
<div class="col-md-3 col-sm-3 col-lg-3 col-xl-3">
<button mat-flat-button color="accent" (click)="Upload(i)">آپلود</button>
</div>
</div>
</ng-container>
</div>
</form>
</div>
ایجاد فایل جدید
{{'POST.FILE_TYPE'| translate}}
{{'ENUM.FILE_TYPE.+item|translate}
{{‘GENERAL.PHOTO’| translate}
形象
حذف
پیش نمایش
آپلود
ts文件中的此代码:
@Input() private postId: number;
uploadFormGroup: FormGroup;
fileType = TypeFile;
fileUpload: FileUpload;
constructor(private formBuilder: FormBuilder, private postService: PostService) { }
ngOnInit(): void {
this.uploadFormGroup = this.formBuilder.group({
postId: [''],
files: this.formBuilder.array([]),
typeEnum: ['', Validators.compose([Validators.required])]
});
}
createItem(): FormGroup {
return this.formBuilder.group({
file: ['']
});
}
removeItem(index: number): void {
const Item = <FormArray>this.uploadFormGroup.controls['files'];
Item.removeAt(index);
}
AddItem(): void {
const Item = <FormArray>this.uploadFormGroup.controls['files'];
console.log(Item);
Item.push(this.createItem());
}
Upload(fileId: number): void {
this.fileUpload.postId = this.postId;
this.fileUpload.typeEnum = this.uploadFormGroup.controls['typeEnum'].value;
this.fileUpload.files = <FormArray>this.uploadFormGroup.controls['files'][fileId].value;
this.postService.UplaodFile(this.fileUpload).subscribe(data => {
console.log(data);
});
}
}
@Input()私有posted:number;
上传FormGroup:FormGroup;
fileType=TypeFile;
文件上传:文件上传;
构造函数(私有formBuilder:formBuilder,私有postService:postService){}
ngOnInit():void{
this.uploadFormGroup=this.formBuilder.group({
职位:[''],
文件:this.formBuilder.array([]),
typeEnum:['',Validators.compose([Validators.required])]
});
}
createItem():FormGroup{
返回此.formBuilder.group({
文件:['']
});
}
removeItem(索引:编号):无效{
const Item=this.uploadFormGroup.controls['files'];
项目移除(索引);
}
AddItem():void{
const Item=this.uploadFormGroup.controls['files'];
控制台日志(项目);
Item.push(this.createItem());
}
上载(文件ID:编号):无效{
this.fileUpload.postId=this.postId;
this.fileUpload.typeEnum=this.uploadFormGroup.controls['typeEnum'].value;
this.fileUpload.files=this.uploadFormGroup.controls['files'][fileId].value;
this.postService.UplaodFile(this.fileUpload).subscribe(数据=>{
控制台日志(数据);
});
}
}
现在,当我单击AddItem()
时,它会显示以下错误:
找不到路径为“文件->0->postId”的控件
有什么问题???请再次检查您的代码 postId控件处于uploadFormGroup下,而不是文件formArray下,并且您正在尝试访问文件formArray下的postId 您必须在formArray文件中添加postId,或者在HTML中的formArray循环外部访问它
createItem(): FormGroup {
return this.formBuilder.group({
file: new FormControl(),
postId: new FormControl()
});
}
现在它向我显示了这个
错误:找不到路径为'fileItems->1->typeEnum'的控件。