angular कोणीय 2 http.post() अनुरोध नहीं भेज रहा है




angular2-http (3)

जब मैं एक पोस्ट अनुरोध करता हूं तो कोणीय 2 http इस अनुरोध को नहीं भेज रहा है

this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions())

http पोस्ट सर्वर पर नहीं भेजा गया है, लेकिन अगर मैं इस तरह का अनुरोध करता हूं

this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions()).subscribe(r=>{});

क्या यह इरादा है और अगर कोई मुझे समझा सकता है तो क्यों? या यह एक बग है?


यदि आप कॉल निष्पादित करना चाहते हैं तो आपको लौटे हुए अवलोकन योग्य की सदस्यता लेनी होगी।

एचटीपी दस्तावेज भी देखें।

हमेशा सदस्यता लें!

एक HttpClient विधि तब तक HTTP अनुरोध शुरू नहीं करती जब तक कि आप उस विधि द्वारा लौटे गए अवलोकन पर सब्सक्राइब () को कॉल न करें। यह सभी HttpClient विधियों के लिए सच है।

AsyncPipe स्वचालित रूप से आपके लिए सदस्यता (और सदस्यता रद्द) करता है।

HttpClient विधियों से लौटाए गए सभी अवलोकन डिज़ाइन द्वारा ठंडा हैं। HTTP अनुरोध का निष्पादन स्थगित कर दिया गया है , जिससे आप वास्तव में कुछ भी होने से पहले tap और catchError जैसे अतिरिक्त संचालन के साथ अवलोकन कर सकते हैं।

subscribe(...) पर्यवेक्षण के निष्पादन को ट्रिगर करता है और सर्वर को HTTP अनुरोध लिखने और भेजने के लिए HttpClient का कारण बनता है।

आप वास्तविक अवलोकन के लिए ब्लूप्रिंट के रूप में इन अवलोकनों के बारे में सोच सकते हैं।


विधि प्राप्त करें सब्सक्राइब विधि का उपयोग करने की आवश्यकता नहीं है लेकिन पोस्ट विधि को सदस्यता लेने की आवश्यकता है। नमूना कोड प्राप्त करें और पोस्ट करें नीचे दिए गए हैं।

import { Component, OnInit } from '@angular/core'
import { Http, RequestOptions, Headers } from '@angular/http'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
import { Post } from './model/post'
import { Observable } from "rxjs/Observable";

@Component({
    templateUrl: './test.html',
    selector: 'test'
})
export class NgFor implements OnInit {

    posts: Observable<Post[]>
    model: Post = new Post()

    /**
     *
     */
    constructor(private http: Http) {

    }

    ngOnInit(){
        this.list()
    }

    private list(){
        this.posts = this.http.get("http://localhost:3000/posts").map((val, i) => <Post[]>val.json())
    }

    public addNewRecord(){
        let bodyString = JSON.stringify(this.model); // 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

        this.http.post("http://localhost:3000/posts", this.model, options) // ...using post request
                         .map(res => res.json()) // ...and calling .json() on the response to return data
                         .catch((error:any) => Observable.throw(error.json().error || 'Server error')) //...errors if
                         .subscribe();
    }
}

चूंकि Http कक्षा की post विधि एक अवलोकन योग्य है, इसलिए इसे प्रारंभिक प्रक्रिया को निष्पादित करने के लिए आपको इसकी सदस्यता लेने की आवश्यकता है। पर्यवेक्षक आलसी हैं।

अधिक जानकारी के लिए आपको इस वीडियो को देखना चाहिए:





angular2-http