打字稿改变了属性类型?

时间:2017-10-14 10:57:03

标签: angular typescript router

我遇到了一些奇怪的问题。我有一节课:

export class Example: {
    str: string;
    isActive: boolean;
}

然后我通过routerLinkqueryParams将该类的一些数据从一个组件转移到另一个组件...在子组件中我执行此操作:

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"

为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

因为您传递的参数

this.router.navigate(['/my/route'],{queryParams: row});

转到query string。在任何情况下,它都将成为字符串。

您有两个选择:

请勿使用路由器参数传递您的数据。相反,使用服务。因此,您将保留原始JSON数据。

将传输的数据重新映射到您的对象类型。