Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 找不到路径为&x27;文件->;0->;posted';_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 找不到路径为&x27;文件->;0->;posted';

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">

我需要用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">
            <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'的控件。