【发布时间】:2017-01-15 09:00:19
【问题描述】:
我正在使用 HTTP observable 进行 POST 请求,但没有发出请求,我没有收到任何错误,我有一个服务定义了我用来发出请求的方法
@Injectable()
export class MovingCompanyService {
constructor(private http: Http){}
registerCompany (body: Object): Observable<RegistrationDetailsModel> {
let bodyString = JSON.stringify(body); // Stringify payload
let headers = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
let options = new RequestOptions({ headers: headers }); // Create a request option
return this.http.post("/moving_company/registration_form_2", body, options) // ...using post request
.map((res:Response) => res.json()) // ...and calling .json() on the response to return data
.catch((error:any) => Observable.throw(error.json().error || 'Server error')); //...errors if any
}
}
我有调用这个服务方法的组件
constructor(private router: Router, private moving_company_service: MovingCompanyService) {}
ngOnInit(): void {
if( Session.has("reg_frm_1")) {
let frm1Data = Session.get("reg_frm_1");
console.log("Received data from form 1 ", frm1Data);
}
}
registerCompany(): void {
let registrationOperation:Observable<RegistrationDetailsModel>;
let registration_details = {
reg_frm_1: Session.get("reg_frm_1"),
reg_frm_2: this.model
}
this.moving_company_service.registerCompany(registration_details)
}
我在视图点击事件上调用组件方法“registerCompany”,例如
<button (click)="registerCompany()">Submit</button>
我不确定我遗漏了什么或做错了什么,我已经导入了 rxjs 库、map 和 catch 操作符,并且所有相关的导入都符合要求,非常感谢您的帮助
【问题讨论】:
-
错误是什么?您是否检查了网络选项卡,您是否在网络选项卡中获得了条目?您还检查过您发布数据的网址是否正确?
-
你在哪里调用订阅函数?
-
我认为你没有在组件上调用订阅是问题。请看看我的答案,如果它有帮助,请告诉我
-
网络选项卡不显示请求,控制台选项卡中没有错误,我不确定我是否知道在哪里或如何订阅 observable
-
所以这意味着它没有被调用,正如我在回答中提到的,请尝试希望它会起作用,当我开始 angular2 时我遇到了同样的问题。没有订阅什么都不会发生。
标签: http angular rxjs observable