我遇到了一些奇怪的问题。我有一节课:
export class Example: {
str: string;
isActive: boolean;
}
然后我通过routerLink
和queryParams
将该类的一些数据从一个组件转移到另一个组件...在子组件中我执行此操作:
this.activatedRoute.params.subscribe((params: Example) => {
console.log(params, typeof params.isActive); //outputs string!!
});
//output: {str: "xxx", isActive: "true"}, "string"
首先我在模板中发送queryParams:
[routerLink]="['/my/route', row]"
,
然后我尝试在控制器中执行此操作:
onBtnClick(row: Example) {
console.log(row, typeof row.isActive);
this.router.navigate(['/my/route'],{queryParams: row});
}
//output: {str: "xxx", isActive: true}, "boolean"
为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:1)
因为您传递的参数
this.router.navigate(['/my/route'],{queryParams: row});
转到query string。在任何情况下,它都将成为字符串。
您有两个选择:
请勿使用路由器参数传递您的数据。相反,使用服务。因此,您将保留原始JSON数据。
或
将传输的数据重新映射到您的对象类型。