我想将 2 个参数传递给 [routerLink]
一个 string
和一个 object
<a [routerLink]="[questionDetailRouterLink, {'question-id':question['question-id'],'question-list':this.questions}]">Show more</a>
哪里
questionDetailRouterLink
是 url
/string
,question['question-id']
映射到 string
,this.questions
是 object
类。所以 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
参数
答案 0 :(得分:0)
我读了两个选项来解决我的问题。第一个是使用 provider
。 Component A
在路由到 provider P
之前更新 component B
中的值。 Provider P
有一个变量来保存要传递的对象,A
更新然后 B
读取。另一种选择是在 A 和 B 之间创建父/子关系,并在需要时使用动态元素创建来显示 B(ngContainer
、ngTemplate
、createEmbeddedView
等)