3

我有一个 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?
        }

    })
}
4

2 回答 2

3

这是

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

没有Promise.resolve是必要的。

于 2017-05-15T17:47:07.103 回答
0

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

于 2019-09-19T12:31:31.050 回答