gpt4 book ai didi

forms - Angular 2 |如何在 FormControl 中处理输入类型文件?

转载 作者:太空狗 更新时间:2023-10-29 17:31:03 24 4
gpt4 key购买 nike

你好,

我如何处理 formControl 中的输入类型文件?我正在使用响应式(Reactive)表单,但是当我获得表单的值时,它会在我的 <input type="file"> 上返回空值??

最佳答案

您需要编写自己的FileInputValueAccessor。这是 the plunker和代码:

@Directive({
selector: 'input[type=file]',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: FileValueAccessorDirective,
multi: true
}
]
})
export class FileValueAccessorDirective implements ControlValueAccessor {
onChange;

@HostListener('change', ['$event.target.value']) _handleInput(event) {
this.onChange(event);
}

constructor(private element: ElementRef, private render: Renderer2) { }

writeValue(value: any) {
const normalizedValue = value == null ? '' : value;
this.render.setProperty(this.element.nativeElement, 'value', normalizedValue);
}

registerOnChange(fn) { this.onChange = fn; }

registerOnTouched(fn: any) { }

nOnDestroy() { }
}

然后您将能够像这样获得更新:

@Component({
moduleId: module.id,
selector: 'my-app',
template: `
<h1>Hello {{name}}</h1>
<h3>File path is: {{path}}</h3>
<input type="file" [formControl]="ctrl">
`
})
export class AppComponent {
name = 'Angular';
path = '';
ctrl = new FormControl('');

ngOnInit() {
this.ctrl.valueChanges.subscribe((v) => {
this.path = v;
});
}
}

关于forms - Angular 2 |如何在 FormControl 中处理输入类型文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45231269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com