Angular 如何在角材质中使用输入类型文件
如何在角材质中使用输入类型文件Angular 如何在角材质中使用输入类型文件,angular,angular-material,material-design,Angular,Angular Material,Material Design,如何在角材质中使用输入类型文件 嗨,我正在使用角材料进行设计。当我在AngleMaterial站点上运行时,并没有输入类型文件元素。任何人都知道这一点。Angular Material尚不支持文件上载的解决方案。 除了这个,还有其他选择。e、 g使用外部库 角度材质文件上传: 支持的功能: 拖放 常见上传 进度条 文件大小和更多 ngx材料文件输入: 支持的功能: ngx mat文件输入component,用于内部角度材料mat表单字段 带有maxContentSize的FileValid
嗨,我正在使用角材料进行设计。当我在AngleMaterial站点上运行时,并没有输入类型文件元素。任何人都知道这一点。Angular Material尚不支持文件上载的解决方案。 除了这个,还有其他选择。e、 g使用外部库 角度材质文件上传: 支持的功能:
- 拖放
- 常见上传
- 进度条
- 文件大小和更多
component,用于内部角度材料ngx mat文件输入
mat表单字段
- 带有
的maxContentSize
,用于限制文件大小FileValidator
- a
以人类可读的格式格式化文件大小ByteFormatPipe
- 还有更多的小功能
如果您只需要一个显示良好的文件输入按钮,这里有一个解决方法 Html 受此棱角材料启发,Github发表评论
我建议您结账 它是非常有棱角的材料
如果你不想使用一些奇怪的解决方法,那么就不要将
输入
放入mat表单字段
。您可以将其放置在mat表单字段
之外,但仍可以将该值包含在表单组
中。检查示例
<form [formGroup]="someForm" (ngSubmit)="onSubmit()">
<!--input outside the form-field-->
<input type="file" (Change)="onChange($event)"/>
<mat-form-field>
<!--input inside the form-field-->
<input matInput formControlName="someFCN">
</mat-form-field>
<button mat-raised-button>Submit</button>
</form>
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
someForm: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit(): void {
this.someForm = this.formBuilder.group({
someFCN: [{ value:'', disabled: false },Validators.required],
file: { value:'', disabled: false }
});
}
onChange(event: Event) {
/*not sure what you want to do with file, i'll just set
selected file´s name as value, but obviously u can do much more than just get file´s name.*/
this.someForm.controls['file'].setValue(event.target.files[0].name);
}
onSubmit() {
return this.someForm.getRawValue();
}
提交
从“@angular/forms”导入{FormBuilder、FormGroup、Validators};
某种形式:FormGroup;
构造函数(私有formBuilder:formBuilder){}
ngOnInit():void{
this.someForm=this.formBuilder.group({
someFCN:[{value:'',已禁用:false},验证器。必需],
文件:{值:“”,已禁用:false}
});
}
onChange(事件:事件){
/*我不确定你想用这个文件做什么,我只设置
选择文件名作为值,但显然您可以做的远不止是获取文件名*/
this.someForm.controls['file'].setValue(event.target.files[0].name);
}
onSubmit(){
返回这个.someForm.getRawValue();
}
可能重复:是的,可能,但我希望使用这种格式使用Angular ay而不是查询选择器不是更好吗?像@ViewChild?我认为最好在onFileSelected($event)
函数中添加$event
,这样您就不需要在输入中使用id=“file”
。
onFileSelected() {
const inputNode: any = document.querySelector('#file');
if (typeof (FileReader) !== 'undefined') {
const reader = new FileReader();
reader.onload = (e: any) => {
this.srcResult = e.target.result;
};
reader.readAsArrayBuffer(inputNode.files[0]);
}
}
<form [formGroup]="someForm" (ngSubmit)="onSubmit()">
<!--input outside the form-field-->
<input type="file" (Change)="onChange($event)"/>
<mat-form-field>
<!--input inside the form-field-->
<input matInput formControlName="someFCN">
</mat-form-field>
<button mat-raised-button>Submit</button>
</form>
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
someForm: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit(): void {
this.someForm = this.formBuilder.group({
someFCN: [{ value:'', disabled: false },Validators.required],
file: { value:'', disabled: false }
});
}
onChange(event: Event) {
/*not sure what you want to do with file, i'll just set
selected file´s name as value, but obviously u can do much more than just get file´s name.*/
this.someForm.controls['file'].setValue(event.target.files[0].name);
}
onSubmit() {
return this.someForm.getRawValue();
}