您能告诉我服务出错时如何重定向到组件吗?在我的应用程序中,我正在请求服务,如果出现任何错误,我希望某些服务会显示错误组件
这是我的代码
https://stackblitz.com/edit/angular-ctwnid?file=src%2Fapp%2Ftest.service.ts
在当前示例中,我正在使用resolver
来获取数据。
const routes: Routes = [
{
path: 'home',
component: HelloComponent,
resolve: { data: TestResolver }
},
{
path: 'error',
component: ErrorComponent
},
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
}
];
我更改了requested url
,以便收到错误消息
正确的网址:https://jsonplaceholder.typicode.com/todos/1
网址错误:https://jsonplaceholder.typicode.com/todoss/1
我希望如果遇到错误,它将重定向到Errorcomponent
。
@Injectable()
export class TestResolver implements Resolve<Observable<string>> {
constructor(private testService: TestService) {}
resolve(): Observable<any> {
return this.testService.getConfiguration();
}
}
是否有任何更新?
答案 0 :(得分:0)
您有两种选择。您可以使用Guard来处理此问题,但是由于它基于已解析的数据,因此使其成为拦截器可能是一个好主意。这是一篇应指出正确方向的帖子:拦截器 Using Router in services in Angular 4
答案 1 :(得分:0)
您可以在自己的组件中处理此问题。
只要API调用失败,就使用
this._service.function().subscribe(success => {
.....
},
error => {
this.router.navigate['error'];
});
呼叫服务的地方。