使用 Resolve 停止路由更改

Using Resolve to stop a route change

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

现在,其中一些项目我实际上并没有详细信息 - 当我发出服务请求时我会知道,所以我不想加载带有 404 或其他内容的页面,我只想简单地不让他路由到那个页面。

我正在使用 Resolve 来加载项目,所以理论上它应该很简单,但我不知道如何在特定条件下阻止路线改变。

我尝试使用 Location.back,但似乎根本不起作用。

resolve(route: ActivatedRouteSnapshot): Promise<Article> {
    return this.articleService.getArticle(route.paramMap.get('name')).then((article) => {

        if (article) {
            return Promise.resolve(article);
        }
        else {
            //Stop them?
        }

    })
}

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

不需要Promise.resolve

另一种阻止导航的方法是从解析流中抛出错误。参见