服务出现错误时如何重定向到错误组件?

时间:2018-08-27 05:41:41

标签: javascript angular angular-resolver

您能告诉我服务出错时如何重定向到组件吗?在我的应用程序中,我正在请求服务,如果出现任何错误,我希望某些服务会显示错误组件

这是我的代码

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();
  }
}

是否有任何更新?

2 个答案:

答案 0 :(得分:0)

您有两种选择。您可以使用Guard来处理此问题,但是由于它基于已解析的数据,因此使其成为拦截器可能是一个好主意。这是一篇应指出正确方向的帖子:拦截器 Using Router in services in Angular 4

答案 1 :(得分:0)

您可以在自己的组件中处理此问题。

只要API调用失败,就使用

this._service.function().subscribe(success => {
.....
},
error => {
this.router.navigate['error'];
});

呼叫服务的地方。