2017-10-14 2 views
0

私は奇妙な問題に直面しました。私はクラスを持っている:Typescriptがプロパティタイプを変更しましたか?

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" 

ファーストその後、私は、コントローラでそれを実行しようとしました、

[routerLink]="['/my/route', row]"

を:私はように、テンプレートにqueryParamsを送っ

onBtnClick(row: Example) { 
    console.log(row, typeof row.isActive); 
    this.router.navigate(['/my/route'],{queryParams: row}); 
} 
//output: {str: "xxx", isActive: true}, "boolean" 

どうしてこの問題を解決するのですか?

+0

エラーは何ですか? – Chandru

+0

ブール型プロパティisActiveはどのように 'string'になりましたか? – Daria

答えて

1

あなたは

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

に渡すパラメータがquery stringに行くので。いずれにせよ、それは文字列になるだろう。

2つのオプションがあります。

データを渡すためにルータのパラメータを使用しないでください。代わりに、サービスを使用します。したがって、オリジナルのJSONデータを保持します。

または

転送されたデータをオブジェクトタイプに再マッピングします。

+0

はい、私はこれをすでに理解しています..ありがとう! – Daria

関連する問題