1

I currently have a component that requires to have a pop up upon submit. The response from the API provides a redirectURL and redirectParams to be used as the popped up window.

Simply using window.open defaults its method to GET and not POST. This causes a Not Found page whenever it is loaded this way.

This is how I currently do it:

protected makeDepositPopup(depositRequest: PaymentRequest) {
    this.depositService.requestDepositPopup(depositRequest)
        .subscribe(
            (depositEvent: RedirectData | SuccessfulDepositPopup) => this.handleDepositPopupEvent(depositEvent),
            (error: EcommError) => this.handleDepositError(error),
            () => this.eventService.depositAttempt.emit()
        );
}

then the event is handled via the handleDeposit event:

protected handleDepositPopupEvent(depositEvent: RedirectData | SuccessfulDepositPopup) {
    if (depositEvent instanceof RedirectData) {
        this.handleRedirect(depositEvent);
    } else {
        this.handleDepositSuccessPopup(depositEvent, this.redirectParams);
    }
}

As soon as it succeeds, it then tries to open a window with the corresponding URL and parameters provided by the API response:

protected handleDepositSuccessPopup(depositEvent: SuccessfulDepositPopup, redirectParams: string): void {
    redirectParams = ""; // to remove undefined value
    depositEvent.params.forEach(function (data, index) {
        if(index == 0) {
           redirectParams += "?" + data["key"] + "=" + data["value"];
        } else {
           redirectParams += "&" + data["key"] + "=" + data["value"];
        }
    });

    window.open(depositEvent.url + redirectParams);
    this.router.navigate(
        ["deposit", this.route.snapshot.data["instrumentTypeCode"], "deposit-details", depositEvent.id], {
            relativeTo: this.route.parent.parent
        });
}

How do I convert this in such a way that the depositEvent.url and its appended redirectParams to open a new window with a POST method to get a successful page response?

Kabachok
  • 573
  • 1
  • 7
  • 22
ralphcarlo
  • 209
  • 6
  • 22

0 Answers0