使用Resolve停止路由更改

时间:2017-05-15 17:27:09

标签: angular angular2-routing es6-promise angular2-resolve

我有一个angular2应用程序,其中列出了许多项目,用户可以单击这些项目以获取有关该项目的更多详细信息。

现在,其中一些项目我实际上并没有详细说明 - 我在提出服务请求时会知道,因此我不想加载带有404或其他任何内容的页面,我只是不想让他走到那个页面。

我正在使用Resolve来加载项目,所以从理论上说它应该非常简单,但我无法弄清楚如何在某些条件下阻止路由更改。

我尝试使用>>> d=[[1,2,3],[1,2,3,4,5],[1,2],[1,2,3,4]] >>> map(sum,d) [6, 15, 3, 10] >>> s=map(sum,d) >>> s [6, 15, 3, 10] >>> max(s) 15 >>> s.index(max(s)) 1 >>> d[s.index(max(s))] [1, 2, 3, 4, 5] ,但这似乎根本不起作用。

Location.back

2 个答案:

答案 0 :(得分:2)

    if (article) {
        return article;
    }
    else {
        return Promise.reject('No articles');
        // or throw ...
    }

不需要Promise.resolve

答案 1 :(得分:0)

另一种防止导航的方法是从resolve流中抛出错误。参见https://stackoverflow.com/a/58010984/3936587