带有 rc1 angular 路由器的子路由
SubRoutes with rc1 angular router
我正在尝试用 rc1 版本重写 angular 的路由器。我有一个功能组,它有一个子路由器,并用非终端路由定义它,如下所示:
{ path: '/contacts/...', component: ContactsComponent}
但是如果我尝试这样导航:
<a [routerLink]="['/contacts']"></a>
上面写着:"Cannot match any routes. Current segment: 'contacts'. Available routes: ['/dashboard', '/contacts/...']"
如果我尝试将 /contacts/... 传递给路由器 link - 它会突然开始工作,但 url 末尾会有“...”出色地。所以这让我得出结论,也许不再需要“...”,所以我重写了这样的路线:
{ path: '/contacts', component: ContactsComponent}
现在我的联系人组件已加载,但我在 ContactsComponent 中定义了以下子路径:
{ path: '/group/:id', component: GroupComponent }
还有一个路由器link:
<a [routerLink]="['./group', {id: group.id}]">{{ group.name }}</a>
以下错误不起作用:
Cannot match any routes. Current segment: 'group;id=1'. Available routes: ['/', '/group/:id']
我也尝试过路由器 link,例如“/group”和“/contacts/group”,其中 none 有效。
有谁知道如何使用 rc1 路由器进行非终端路径的子路由?
我认为关键在于它正在尝试
你可以试试这样的
<a [routerLink]="getLink()">{{ group.name }}</a>
getLink() {
return [`group/${group.id}`]
}
希望对您有所帮助
我假设您的 url 是这样的:/contacts/group/5
将 id 5 传递给联系人组件的子路由中的组组件。正确的路线是相对于内部的子组件,即 ./group/5
组 ID 5.
我使用一种导航方法让它工作,就像 the sample from their docs:
onSelect(crisis: Crisis) {
// Relative link would be `./groups/${group.id}` in your case
this.router.navigate([`./${crisis.id}`], this.currSegment);
}
虽然没有记录,但您可以将值作为第二个数组元素而不是对象传递。这里点击数字使用 onSelect() 导航,点击名称使用 routerLink
(plnkr)
<!-- [routerLink]="['./', group.id]"> -->
<li *ngFor="let crisis of crises"
<span class="badge" (click)="onSelect(crisis)">{{crisis.id}}</span>
<a [routerLink]="['./', crisis.id]">{{crisis.name}}</a>
</li>
我正在尝试用 rc1 版本重写 angular 的路由器。我有一个功能组,它有一个子路由器,并用非终端路由定义它,如下所示:
{ path: '/contacts/...', component: ContactsComponent}
但是如果我尝试这样导航:
<a [routerLink]="['/contacts']"></a>
上面写着:"Cannot match any routes. Current segment: 'contacts'. Available routes: ['/dashboard', '/contacts/...']"
如果我尝试将 /contacts/... 传递给路由器 link - 它会突然开始工作,但 url 末尾会有“...”出色地。所以这让我得出结论,也许不再需要“...”,所以我重写了这样的路线:
{ path: '/contacts', component: ContactsComponent}
现在我的联系人组件已加载,但我在 ContactsComponent 中定义了以下子路径:
{ path: '/group/:id', component: GroupComponent }
还有一个路由器link:
<a [routerLink]="['./group', {id: group.id}]">{{ group.name }}</a>
以下错误不起作用:
Cannot match any routes. Current segment: 'group;id=1'. Available routes: ['/', '/group/:id']
我也尝试过路由器 link,例如“/group”和“/contacts/group”,其中 none 有效。
有谁知道如何使用 rc1 路由器进行非终端路径的子路由?
我认为关键在于它正在尝试
你可以试试这样的
<a [routerLink]="getLink()">{{ group.name }}</a>
getLink() {
return [`group/${group.id}`]
}
希望对您有所帮助
我假设您的 url 是这样的:/contacts/group/5
将 id 5 传递给联系人组件的子路由中的组组件。正确的路线是相对于内部的子组件,即 ./group/5
组 ID 5.
我使用一种导航方法让它工作,就像 the sample from their docs:
onSelect(crisis: Crisis) {
// Relative link would be `./groups/${group.id}` in your case
this.router.navigate([`./${crisis.id}`], this.currSegment);
}
虽然没有记录,但您可以将值作为第二个数组元素而不是对象传递。这里点击数字使用 onSelect() 导航,点击名称使用 routerLink
(plnkr)
<!-- [routerLink]="['./', group.id]"> -->
<li *ngFor="let crisis of crises"
<span class="badge" (click)="onSelect(crisis)">{{crisis.id}}</span>
<a [routerLink]="['./', crisis.id]">{{crisis.name}}</a>
</li>