使用 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
。
另一种阻止导航的方法是从解析流中抛出错误。参见
我有一个 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
。
另一种阻止导航的方法是从解析流中抛出错误。参见