我创建了一个包含具有routerLink属性的元素的组件,我想从使用该组件的模板中设置该属性。当我尝试这样做时,我收到错误消息'无法读取属性'路径'未定义'。
我的组件看起来链接了这个:
信息-box.component.ts
import { Input, Component } from "@angular/core";
import { ROUTER_DIRECTIVES } from "@angular/router";
@Component({
selector: "info-box",
template: require("./info-box.component.html"),
directives: [
ROUTER_DIRECTIVES
]
})
export class InfoBoxComponent {
@Input() routerLink: string;
@Input() imageUrl: string;
}
信息-box.component.html
<a [routerLink]="[routerLink]">
<img src="{{imageUrl}}" width="304" height="236">
</a>
并且使用组件的模板看起来像这样:
<info-box [routerLink]="['/test']" [imageUrl]="['./testimage.jpg']"
如果我不添加routerLink,一切正常。我的路由器配置似乎是正确的,因为当我直接添加到我的模板时,它也可以正常工作。任何人都可以帮我这个吗?
Grt Marco
答案 0 :(得分:10)
你可以在html
中使用这样的代码来动态创建url例如,您在路由器中的路径是path:'destination/:id'
,那么您可以像这样使用routerLink
<div *ngFor = "let item of items">
<a routerLink = "/destination/{{item.id}}"></a>
</div>
我希望我的答案有用
答案 1 :(得分:4)
对于任何使用Angular 2.4并与
结合使用此问题的人 import { AppRoutingModule } from './app-routing.module';
在app.module.ts
而不是ROUTER_DIRECTIVES
,不再需要,以下语法对我有用:
<a [routerLink]="['item', item.id ]">Item</a>
答案 2 :(得分:0)
假设您的数组看起来像:
this.menuuItems = [
{
text: 'Tournament Setup',
path: 'app-tournament'
}];
现在在您的html中使用
<li *ngFor = "let menu of menuuItems">
<span routerLink="/{{menu.path}}">
<a>{{menu.text}}</a>
</span>
</li>