Angular2-使用skipLocationChange从url获取参数

Angular2-使用skipLocationChange从url获取参数,angular,Angular,我不知道如何在请求(组件)之间传输数据。我需要将错误从任何组件传输到ErrorComponent,并显示错误消息和http状态代码。 我试试这个: this.router.navigate(['/error', { error: error }], { skipLocationChange: true }); 但我不知道如何从url获取错误参数(错误参数不在浏览器中)。我知道当skipLocationChange=false时,我在url中看到了错误,但我不想看到它。 如何将错误从errorh

我不知道如何在请求(组件)之间传输数据。我需要将错误从任何组件传输到ErrorComponent,并显示错误消息和http状态代码。 我试试这个:

this.router.navigate(['/error', { error: error }], { skipLocationChange: true });
但我不知道如何从url获取错误参数(错误参数不在浏览器中)。我知道当skipLocationChange=false时,我在url中看到了错误,但我不想看到它。 如何将错误从errorhandler传输到errorcomponent以显示错误消息?我如何知道我有哪些http错误代码?
感谢使用app.routing文件中的标准方式

@RouteConfig([
    {path: '/error', component: ErrorComponent,
     as: 'Error', data: {error: '404' // or your component variable the info you get from service}}])

export class ErrorComponent{
    error: string;
    constructor(params: RouteParams, data: RouteData) {
        this.productID = params.get('error');

        console.log('Error is ', data.get('error'));
    }
}

在组件中,请像这样使用

this.router.navigate(['/a4',{message:"Not Authorised"}]);
在错误组件中,访问如下值

this.message = this.route.snapshot.params['message']; //you can even subscribe to the value here to listen for changes

您可以使用服务在两个组件之间传输错误消息。参考这个链接,谢谢,这很好。但我还有一个问题。我的服务有属性错误,类型为error。现在我需要显示http状态代码。在http.get()中,我将获取代码404。我用属性代码创建了类HttpError,但当我在服务中强制转换属性错误时,仍然有错误,我不知道状态代码。为什么不将错误代码与路由器中的数据部分一起发送。导航函数,以便以后无需解析它。i:我把它当作一根弦发过去,你能告诉我怎么发吗?Thanks@bluray希望他的帮助谢谢你,但我有一些小问题。我不明白你例子的任何部分。在路由配置中,您有数据{error:404},但从服务器我得到不同的状态代码,404400401。。。如何添加从服务器获取的代码?在第二个示例中,您有一条消息,我想发送错误消息、状态代码,可能还有callstack(用于调试),但我不会在url中显示这些数据。对不起,我是angular2的新手。谢谢:)这是另一种方式,当你从app.routing发送静态数据时。如果要发送任何更改的数据,请通过this.router.navigate(['/a4',{message:“Not authorized”})发送;更改消息值而不是字符串使用变量是的,我知道我在errorhandler中编写了类似这样的内容(['/a4',{message:error.message,statusCode:error.statusCode,error:error}]);但我在url中看到的数据,这是好方法还是坏方法?如果您不想在url中看到数据,请通过服务将数据发送到组件,或使用路由器的数据属性,{path:'a4/',组件:Angular4Component,数据:{ping:'passed via router'}}但我不确定这是否可以通过路由器实现,你可能需要检查我发现一个链接,它可以通过路由器解析检查实现