Angular 使用Form Builder进行HTML文件浏览的角度自定义验证

Angular 使用Form Builder进行HTML文件浏览的角度自定义验证,angular,Angular,我正在使用反应式表单验证,需要验证文件上载控件。目前,我正在使用一个变更指令来处理它的验证 <label class="btn btn-primary btn-file"> Browse <input type="file" (change)="fileChanged($event)" style="display:none;"> </label> 我可以将上载/文件浏览放到表单生成器中,并从那里对其使用自定义验证吗?首先在表单中创建一个控件,但不要通

我正在使用反应式表单验证,需要验证文件上载控件。目前,我正在使用一个变更指令来处理它的验证

<label class="btn btn-primary btn-file">
   Browse <input type="file" (change)="fileChanged($event)" style="display:none;">
</label>

我可以将上载/文件浏览放到表单生成器中,并从那里对其使用自定义验证吗?

首先在表单中创建一个控件,但不要通过
formControlName
将其分配给输入。相反,您希望继续使用
(change)
事件,但在change函数中,您希望将文件值添加到控件中。您还需要编写一个自定义验证器,该验证器将检查您需要检查的任何文件。下面是它的外观(isch):

file.validator.ts

export const FileValidator = (): ValidatorFn => {

  return (control: FormControl): {[key: string]: boolean} => {

    // Do whatever checking you need here
    const valid: boolean = true;

    return valid ? null : {
      file: true
    };
  };
};
验证将检查
文件
控件中的任何值,因此您不必在单独的函数中手动验证它


我希望这会有所帮助。

首先在表单中创建一个控件,但不要通过
formControlName
将其分配给输入。相反,您希望继续使用
(change)
事件,但在change函数中,您希望将文件值添加到控件中。您还需要编写一个自定义验证器,该验证器将检查您需要检查的任何文件。下面是它的外观(isch):

file.validator.ts

export const FileValidator = (): ValidatorFn => {

  return (control: FormControl): {[key: string]: boolean} => {

    // Do whatever checking you need here
    const valid: boolean = true;

    return valid ? null : {
      file: true
    };
  };
};
验证将检查
文件
控件中的任何值,因此您不必在单独的函数中手动验证它


我希望这有帮助。

您需要什么样的验证?你能分享你需要什么样的验证方法吗?你能分享你的价值观吗
export const FileValidator = (): ValidatorFn => {

  return (control: FormControl): {[key: string]: boolean} => {

    // Do whatever checking you need here
    const valid: boolean = true;

    return valid ? null : {
      file: true
    };
  };
};