Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I get value from observable<void>

Im new to angular and im trying to get value from method by subscribing. here’s the method I’m trying to get value from. I’m not quiet sure how this method works but I know that its supposed to return {ClientId, ClientSecret} Object

clientSecret(merchantId: number): Observable<void> {
    let url_ = this.baseUrl + "/api/PosQR/{merchantId}/client-secret";
    if (merchantId === undefined || merchantId === null)
        throw new Error("The parameter 'merchantId' must be defined.");
    url_ = url_.replace("{merchantId}", encodeURIComponent("" + merchantId));
    url_ = url_.replace(/[?&]$/, "");
    let options_ : any = {
        observe: "response",
        responseType: "blob",
        headers: new HttpHeaders({
        })
    };
    return this.http.request("get", url_, options_).pipe(_observableMergeMap((response_ : any) 
   => {
        return this.processClientSecret(response_);
    })).pipe(_observableCatch((response_: any) => {
        if (response_ instanceof HttpResponseBase) {
            try {
                return this.processClientSecret(response_ as any);
            } catch (e) {
                return _observableThrow(e) as any as Observable<void>;
            }
        } else
            return _observableThrow(response_) as any as Observable<void>;
    }));
}

Im trying to subscribe to it in ngOnInit and save the value in local variable

this.posQrClient.clientSecret(2343).subscribe(res => {
    this.clientId = res[ClientId]
});

it returns null.
I’ve tried to solve it lots of ways but couldn’t figure it out. If anyone can help me I will greatly appreciate it

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Your subscription looks correct, that is one way to grab values from an observable but in your case you are grabbing void values.

An Observable<void> is a stream of void values. It sounds like you want a stream of {ClientId, ClientSecret} values. In that case you should type your function like this,

clientSecret(merchantId: number): Observable<{clientSecret: string; clientId: string}> {...}

Then you will need to make sure that you are correctly returning that type. If you’re comfortable using any you could also do,

clientSecret(merchantId: number): Observable<any> {...}

But I don’t recommend that.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading