【问题标题】:Prevent Hardcoding Routerlink防止硬编码路由器link
【发布时间】:2020-08-14 11:46:32
【问题描述】:
有没有办法防止在每个component.html中硬编码routerlink?
有这个代码
<a [routerLink]="['/home/candoy/pipeline/', this.Id]">Pipeline</a><br />
<a [routerLink]="['/home/candoy/filter/', this.Id]">Filter</a><br />
在 5+ 个不同的组件页面。
谢谢!
【问题讨论】:
标签:
angular
visual-studio-code
【解决方案1】:
不,这就是 Angular 的用途!
当您在 Angular 中为属性使用 [方括号] 时,您可以将组件中的任何变量传递给该参数。这意味着您还可以循环访问一组预设项。这是一个例子:
<span *ngFor="let item of menuItems"><a [routerLink]="[item.route, this.Id]">{{item.title}}</a><br /></span>
然后在你的 component.ts 中:
menuItems = [{ route: '/home/candoy/pipeline', title: 'Pipeline'}, { route: '/home/candoy/filter', title: 'Filter'}]
组件之间共享呢?
嗯,你的菜单应该是一个独立的组件,然后你可以将菜单包含到其他组件中。
但是 - 如果您真的需要这样做,您可以将数组放入 服务,将该服务导入您的组件(作为公共),然后从模板访问该数组。