【问题标题】:Using Resolve to stop a route change使用 Resolve 停止路线更改
【发布时间】:2017-05-15 17:27:08
【问题描述】:

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

    })
}

【问题讨论】:

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


    【解决方案1】:

    是的

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

    不需要Promise.resolve

    【讨论】:

    • 谢谢——这似乎是唯一适用于 Angular 6 的解决方案。
    • @AlexPeters 不客气。你也可以使用 async..await。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 1970-01-01
      • 2019-11-09
      • 1970-01-01
      • 2020-06-27
      • 2011-10-13
      • 1970-01-01
      • 2021-07-12
      • 2017-05-31
      相关资源
      最近更新 更多