在 angular 的路由中传递对象时出现克隆错误
Clone error when passing an object in the route of angular
我试图在我的 angular 项目中传递对象而不是单独的字段。但我收到“错误:未捕获(承诺):DataCloneError:无法克隆对象。” :(
这是代码:
var errorJsonNav: NavigationExtras = {state:{errorJson:ErrorJsonDTO}};
this.router.navigate(['error'], errorJsonNav);
这是 DTO:
export class ErrorJsonDTO {
excepcionProducida: boolean;
errorDescripcion: string;
codigoIncidencia: string;
correcto: boolean;
falloSistema:boolean;
horaActual: string;
mensajeBase: string;
}
这是示例的数据:
字段非常简单,一些字符串和一些布尔值。为什么我有克隆问题? :(
此致
您没有向状态传递有效值:
{state:{errorJson:ErrorJsonDTO}};
ErrorJsonDTO
是一个类型,你需要传一个ErrorJsonDTO
类型的值
如果 errorJson 是 ErrorJsonDTO
类型的有效值,请尝试此操作
this.router.navigate(['error'], state: { errorJson });
感谢 ritesh 的指导,我做出了解决方案。
组件发送者必须这样编码:
var errorJsonNav: NavigationExtras = {state:{errorJson:errorJson}};
this.router.navigate(['error'], errorJsonNav);
所以第一行的错误是在状态部分。状态必须具有键值格式。不需要指明我发送的对象的类型。
在component receiver中是好的原代码:
var navigation = this.router.getCurrentNavigation();
var state = navigation?.extras.state as {errorJson:ErrorJsonDTO};
this.errorJson = state.errorJson;
我试图在我的 angular 项目中传递对象而不是单独的字段。但我收到“错误:未捕获(承诺):DataCloneError:无法克隆对象。” :(
这是代码:
var errorJsonNav: NavigationExtras = {state:{errorJson:ErrorJsonDTO}};
this.router.navigate(['error'], errorJsonNav);
这是 DTO:
export class ErrorJsonDTO {
excepcionProducida: boolean;
errorDescripcion: string;
codigoIncidencia: string;
correcto: boolean;
falloSistema:boolean;
horaActual: string;
mensajeBase: string;
}
这是示例的数据:
字段非常简单,一些字符串和一些布尔值。为什么我有克隆问题? :(
此致
您没有向状态传递有效值:
{state:{errorJson:ErrorJsonDTO}};
ErrorJsonDTO
是一个类型,你需要传一个ErrorJsonDTO
如果 errorJson 是 ErrorJsonDTO
this.router.navigate(['error'], state: { errorJson });
感谢 ritesh 的指导,我做出了解决方案。
组件发送者必须这样编码:
var errorJsonNav: NavigationExtras = {state:{errorJson:errorJson}};
this.router.navigate(['error'], errorJsonNav);
所以第一行的错误是在状态部分。状态必须具有键值格式。不需要指明我发送的对象的类型。
在component receiver中是好的原代码:
var navigation = this.router.getCurrentNavigation();
var state = navigation?.extras.state as {errorJson:ErrorJsonDTO};
this.errorJson = state.errorJson;