在Angular2中一起发布和重定向

时间:2017-05-19 20:40:03

标签: angular angular2-routing angular-cli

我正在尝试发布数据,同时也会重定向到该页面。是否有可能发布数据并重定向到该页面? 我可以发布数据,但无法重定向到该页面。我不希望在帖子的成功中重定向。

  return this._http.post('/Tickets/Search', 'body', { headers: this.getHeaders() })
            .map((res: Response) => res.json());
}

Jquery实现:

    function ShowDashboard(jqlJson)
    {
        post("http://localhost:22541/ServiceDesk/Ticket/Dashboard", jqlJson, "post");
    }
    function ShowDashboard1() {
        var jqlBody = {};
        jqlBody["jql"] = "project = PIMCO and  reporter = ssolairajan";

        post("http://localhost:22541/ServiceDesk/Ticket/Dashboard", jqlBody, "post");
    }

    function post(path, params, method) {
        method = method || "post";

        var form = document.createElement("form");
        form.setAttribute("method", method);
        form.setAttribute("action", path);

        for (var key in params) {
            if (params.hasOwnProperty(key)) {
                var hiddenField = document.createElement("input");
                hiddenField.setAttribute("type", "hidden");
                hiddenField.setAttribute("name", key);
                hiddenField.setAttribute("value", params[key]);

                form.appendChild(hiddenField);
            }
        }

        document.body.appendChild(form);
        form.submit();
    }

1 个答案:

答案 0 :(得分:0)

通常,您希望完成帖子,然后重定向。 但你几乎可以做任何你想做的事。

我想象这个函数的调用者:

return this._http.post('/Tickets/Search', 'body', { headers: this.getHeaders() }) .map((res: Response) => res.json()); }

应订阅执行post请求,然后调用者必须调用

router.navigate(['/Tickets/Search']); 为了重定向。

假设您的函数名为makeASearch(search:string)

`function foo(searchQuery){

/*Execute the post*/

this.makeASearch(searchQuery).subscribe();

/*Redirect to /Tickets/Search obviously you should have the route defined*/

this.router.navigate(['/Tickets/Search']);

}`

这样,post请求将在你被重定向到/ Tickets / Search

后立即执行

告诉我它是否对你有帮助。

提示: 具有路由器和异步的陷阱是,如果您在执行所有发布请求之前调用router.navigate,则无法确定它们是否会被执行,因为angular会在重定向时破坏您的组件。