コンポーネントを使用するテンプレートから設定したいrouterLinkプロパティを持つ要素を含むコンポーネントを作成しました。これを実行しようとすると、「未定義のプロパティ「パス」を読み取れません」というエラーメッセージが表示されます。
私のコンポーネントはこれをリンクしているように見えます:
info-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;
}
info-box.component.html
<a [routerLink]="[routerLink]">
<img src="{{imageUrl}}" width="304" height="236">
</a>
そして、コンポーネントが使用されるテンプレートは次のようになります。
<info-box [routerLink]="['/test']" [imageUrl]="['./testimage.jpg']"
RouterLinkを追加しない場合、すべてが正常に機能します。テンプレートに直接追加すると正常に機能するため、ルーターの構成は正しいようです。誰かがこれで私を助けることができますか?
Grtマルコ
このようなコードを使用して、htmlで動的にURLを作成できます。
たとえば、ルーターのパスがpath:'destination/:id'
の場合、次のようにrouterLink
を使用できます。
<div *ngFor = "let item of items">
<a routerLink = "/destination/{{item.id}}"></a>
</div>
Angular 2.4と組み合わせてこの問題を抱えている人のために
import { AppRoutingModule } from './app-routing.module';
の中に app.module.ts
の代わりに ROUTER_DIRECTIVES
、これは不要になりましたが、次の構文が機能しました。
<a [routerLink]="['item', item.id ]">Item</a>
配列が次のようになっているとします。
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>