在Angular 2中我如何根据表单模型向服务器发送数据。在某些情况下,我可以通过单击addMore按钮添加更多行。如何通过角度发送数据到服务器2
回答
使用HTTP类,在其最基本的形式,可以利用这样的:
export class EndPointService {
constructor(private _http: Http) {
}
public postData(url: string, data: any): Response {
return this._http.post(url, data).map((res: Response) => {
return res.json();
}
}
}
首先,你需要导入HttpModule
,如果你要送json_encoded数据,您还需要导入JsonpModule
。您可以从@angular/http
导入这两个模块,并将其添加到您的app.module.ts
文件作为@NgModule
app.module.ts内进口:
import { HttpModule, JsonpModule } from '@angular/http';
@NgModule({
imports: [
...,
HttpModule,
JsonpModule
],
bootstrap: [AppComponent]
})
接下来的步骤是让一个服务,将处理Http请求。您需要从rxjs
包中导入Observable
对象和map
方法来处理响应。此外,如果要使用POST HTTP请求发布数据(所有对象都在@angular/http
中),则需要导入Http,Response,Headers和RequestOptions对象。在服务中,您设置了可从组件访问并使用它的功能将数据发送到服务器,并赶上,你可以订阅响应
http.service.ts:
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
@Injectable()
export class HttpService {
private _url: string = "http://example.com"; // Url which handles JSON encoded data
constructor(private _http: Http) {} // Injecting the Http Service
sendData(data): Observable<Object> {
let encoded_data = JSON.stringify({ data });
let headers = new Headers({ 'Content-Type': 'application/json;charset=utf-8' });
let options = new RequestOptions({ headers: headers });
return this._http.post(encoded_data, this._url, options).map(
(res: Response) => res.json() || {}
);
}
在组件需要导入的服务和使用您的方法刚刚创建,您也可以订阅此方法以获得响应。
个example.component.ts:
import { Component, OnInit } from '@angular/core';
import { HttpService } from 'http.service';
@Component({
...
})
export class ExampleComponent implements OnInit {
constructor(private _httpService: HttpService) {}
ngOnInit() {}
sendDataToServer(dataFromForm) {
this._httpService.sendData(dataFromForm).subscribe(
response => console.log(response), // success
error => console.log(error), // error
() => console.log('completed') // complete
}
}
更多信息可以在这里HTTP Client
如何作为数组发送[如:如果我有20多个或更多的数据]。 – Ripon
那么..你可以在你的窗体标签上使用事件触发器'(submit)=“sendDataToServer(yourForm.value)”''然后它被串接并发送到服务器。但是,服务器需要能够处理字符串化的数据......否则它不会工作 –
@Ripon实际上,现在当我阅读这篇文章时,你可以用json_encode将你的数组串起来,然后在服务器上你只需要json_parse并将它用作数组,就像那样简单 –
如何发送一个数组发现[爱:如果我有20个多列。 – Ripon
阵列在通过电线发送之前将被串化。 'any'处理任何类型 - 尽管它不是类型安全的。 https://angular.io/docs/ts/latest/guide/server-communication.html 注意我省略了选项,但它们可能是必需的 - CORS和 – KnowHoper