angular - 发送前更改表单的特定值
问题描述
我有一个用户注册页面,我希望用户能够上传他自己的头像图片。到目前为止,我的逻辑是上传图片,调用更改将图片转换为 UInt8Array 以将其存储在 Mongo 上的函数。所以我有:
onRegister(form):void{
this.authService.register(form.value).subscribe(res =>{
this.router.navigateByUrl('/auth');
})}
该函数在提交时调用,它获取整个表单数据并将其发送到 authService.register。但是,UInt8Array 数据存储在另一个变量中。如何“打开” form.value 来修改头像值?
html供参考:
<form #frmRegister="ngForm" class="login-container" (ngSubmit)="onRegister(frmRegister)">
<p><input type="text" name="name" placeholder="Nombre" ngModel required></p>
<p><input type="email" name="email" placeholder="Email" ngModel required></p>
<p><input type="password" name="password" placeholder="Contraseña" ngModel required></p>
<p><label name="signature_UintArray">Avatar</label>
<input type="file" name="avatar" placeholder="avatar"(change)="avatartoUintArray($event)"></p>
<p>
<label for="role">Elige un rol</label>
<select [(ngModel)]="selectedRol" name="role" placeholder="avatar" ngModel >
<option *ngFor="let rol of role" [ngValue]="rol">{{rol}}</option>
</select>
</p>
<p><input type="submit" value="Register"></p>
</form>
和 avatartoUintArray()
avatartoUintArray(archivo){
(archivo, callback) =>{
let fr = new FileReader();
fr.onload = function(){
var arrayBuffer = this.result;
var array = new Uint8Array(<ArrayBuffer>arrayBuffer);
callback(array);
};
fr.readAsArrayBuffer(archivo.target.files[0]);
}
}
callback(Uint8info){
this.avatar = Uint8info;
}
解决方案
尝试:
onRegister(form) :void {
const formValue = { ...form.value };
const formValueForApi = {
...formValue,
avatar: // I assume the key is called avatar, overwrite it to what you would like.
};
console.log(formValueForApi); See if it is what you would like
this.authService.register(formValueForApi).subscribe(res =>{
this.router.navigateByUrl('/auth');
});
}
推荐阅读
- variables - 如何在计算机内存中存储和访问变量及其引用?
- android - Android Studio 关闭键盘并完成活动
- node.js - TypeError:_this._transport.sendEvent 不是函数
- java - 从 C 转换为 Java 的块合并排序未正确排序;是我重构指针的责任吗?
- jekyll - 如何在没有 XML 文件的情况下将 Blogger 站点导入 Jekyll?
- java - 从另一个活动中获取数据正在给出 RuntimeException
- mysql - MySQL 从另一个表值更新表
- ruby - 有没有办法打印由 ruby-net-ldap 发送到 LDAP 服务器的确切命令?
- c# - 缩小矩形以显示它在大原始图像中的样子
- c# - 可选依赖注入最佳实践