在 routerLink 中传递自定义对象

时间:2020-12-24 15:39:55

标签: angular6

我想将 2 个参数传递给 [routerLink] 一个 string 和一个 object

<a [routerLink]="[questionDetailRouterLink, {'question-id':question['question-id'],'question-list':this.questions}]">Show more</a>

哪里 questionDetailRouterLinkurl/stringquestion['question-id'] 映射到 stringthis.questionsobject 类。所以 this.questions 被作为它的 toString() 等价物传递,即 [Object object]

在接收组件端,我试图提取这样的值

this.question_id = this.route.snapshot.paramMap.get('question-id'); // question-details;question-id=:id'
this.questions = this.route.snapshot.paramMap.get('question-list'); //this gives [Object object]

我以为我可以传递对象的 JSON.stringify 版本(并在接收端执行 JSON.parse),但我无法在模板 [routerLink]="[questionDetailRouterLink, {'question-id':question['question-id'],'question-list':JSON.parse(this.questions)}]" 中执行此操作 - 编译错误

我如何将对象传递给另一个对象(有独立的并且不是父/子)所以我不能使用 input 参数

1 个答案:

答案 0 :(得分:0)

我读了两个选项来解决我的问题。第一个是使用 providerComponent A 在路由到 provider P 之前更新 component B 中的值。 Provider P 有一个变量来保存要传递的对象,A 更新然后 B 读取。另一种选择是在 A 和 B 之间创建父/子关系,并在需要时使用动态元素创建来显示 B(ngContainerngTemplatecreateEmbeddedView 等)