0

您能否告诉我当服务出错时如何重定向到组件?

这是我的代码

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

任何更新 ?

4

2 回答 2

0

你可以在你的 component.ts 中处理这个

每当 API 调用失败时,只需使用

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

您在哪里调用您的服务。

于 2018-08-27T17:11:53.650 回答
0

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

于 2018-08-27T05:50:45.497 回答