如何将数据传递给ActivatedRoute数据属性,而不是使用Resolver guard

时间:2018-03-13 08:35:43

标签: angular

正如Angular文档中所述,一些参数可通过名为ActivatedRoute的注入路由器服务获得。其中有数据属性。

我知道我可以使用Resolver guard将数据传递给该属性,但我想了解其他选项,例如使用routerLink或router.navigate传递数据属性。

有时,当您不希望params成为位置栏上URL的一部分时,它不是使用params传递数据的权利。

我实际上要做的是将参数从router.navigate传递给CanDeactivate后卫,这样当param存在时它会有不同的行为,但我不希望它在位置栏上显示,我不能使用属于活动组件的属性。

1 个答案:

答案 0 :(得分:0)

路由时,不应将数据从组件传递到另一个组件。

此外,必须在路由中声明传递此类数据,这意味着它会锁定数据,因此您无法更改它。

现在的答案,它在很大程度上取决于您想要传递的数据类型。

例如,如果您要求文章的详细信息,那么您只需在URL中传递文章ID即可。

如果要共享配置对象,则可以使用服务将数据从一个组件共享到另一个组件。

如果您使用父子组件,则可以使用`Route::get('/tours/create', 'ToursController@create');` @Input在它们之间共享数据。

如果你想要一个正确的答案,你应该给我们你的目的和一些背景,因为没有完美答案或没有最佳答案,只有适合案件的可接受答案。