В настоящее время я разрабатываю в Angular 2 форму, которая позволяет пользователю обновлять свой профиль: электронную почту и пароль.Угловая 2 - Формируемая модель с входным файлом (загрузка файла)
пользователем edit.component.html:
<form novalidate="novalidate" [ngFormModel]="form" (ngSubmit)="form.valid && onSubmit()">
<fieldset>
<div>
<label for="email">
Email
</label>
<input id="email" type="email" #email="ngForm" ngControl="email"/>
<div class="error" *ngIf="email.control.hasError('required') && email.touched">
This value is required.
</div>
</div>
<div>
<label for="password">
Password
</label>
<input id="password" type="password" #password="ngForm" ngControl="password"/>
<div class="error" *ngIf="password.control.hasError('required') && password.touched">
This value is required.
</div>
</div>
</fieldset>
<button type="submit" [disabled]="!form.valid">
Save
</button>
</form>
пользовательские edit.component.ts:
@Component({
selector: 'user-edit',
templateUrl: 'app/components/user-edit/user-edit.component.html',
})
export class UserEditComponent implements OnInit {
form: any;
errors = [];
constructor(
private _formBuilder: FormBuilder,
private _router: Router,
private _userService: UserService
) {}
ngOnInit() {
this.form = this._formBuilder.group({
'email': ['', Validators.required)],
'password': ['', Validators.required],
});
}
onSubmit() {
var self = this;
this._userService.edit(this.form.value, function (response: Response) {
console.log('OK');
}, function (response: Response) {
console.log('ERROR');
});
}
}
user.service.ts:
@Injectable()
export class UserService {
constructor (
private _http: Http
) {}
edit(user: User, cfOnNext?: Function, cfOnError?: Function): void {
let body = JSON.stringify(user);
let headers = new Headers({
'Content-Type': 'application/json',
});
let options = new RequestOptions({
headers: headers,
});
self._http.put('https://api.dom/me', body, options).subscribe(function (response) {
if (cfOnNext) {
cfOnNext(response);
}
}, function (response) {
if (cfOnError) {
cfOnError(response);
}
});
}
}
Сегодня я хочу чтобы загрузить фотографию, просто добавив поле типа файла.
Но я нашел очень мало информации по этому вопросу.
Единственное решение, кажется, подойти, что я хочу сделать, это здесь: https://www.thepolyglotdeveloper.com/2016/02/upload-files-to-node-js-using-angular-2/
Есть ли лучшее решение для достижения этой цели? Решение, которое ближе к моему коду, потому что я хочу максимальной стандартизации? Например, с помощью $ http Angular service, который я уже использую?
Спасибо!
Ответ точно похож на [это ответ] (http://stackoverflow.com/a/35985489/2435473) (decto каждое слово скопировано как есть), почему бы вам не отметить его как дублировать .. а не переписывать его снова –
да, это потому, что я думаю, что вопрос - это нечто иное, чем этот вопрос, поэтому отправляйте его как ответ. –
Тогда почему бы не отметить его как дубликат, если вы так и подумали .. или просто добавьте ответную ссылку для комментариев .. –