【发布时间】:2018-04-28 08:22:11
【问题描述】:
我有这两个路线定义,产品列表和产品详细信息:
const routes: Routes = [
...
{
path: 'product',
component: ProductListComponent,
resolve: {
products: ProductListResolverService
},
children: [
{
path: ':productcode',
component: ProductDetailComponent,
resolve: {
product: ProductDetailResolverService
}
},
...
]
}
...
在产品列表组件中,我有一组单选按钮来指示选择了哪个产品,而路由器出口显示产品详细信息组件:
<div *ngFor="let product of Products" class="radio">
<label>
<input [(ngModel)]="SelectedProduct"
[value]="product"
(change)="RefreshDetail()"
name="selectedProduct"
type="radio">
{{product.Name}} {{product.Code}}
</label>
</div>
<router-outlet></router-outlet>
当用户点击单选按钮时,URL、产品详情组件和单选按钮同步正确。
但是当用户直接访问某个产品 URL 时,URL 和产品详细信息组件会显示正确的产品,但单选按钮不会。我所说的直接进入某个产品 URL 的意思是用户将 URL 输入到浏览器地址栏并回车。
我尝试从 ActivatedRoute 获取 :productcode 的值,但没有成功:
this.route.paramMap.subscribe(params => {
let productcode = params.get("productcode");
let product = this.Products.find(product => product.Code == productcode);
if (!!product) {
this.SelectedProduct = product;
}
});
paramMap.get("productcode") 始终为空。可能是因为它在产品列表路由中不可用,而是在子路由,产品详情路由中。
我还没有找到从产品列表组件订阅产品详细信息路由的方法。此外,产品详细信息路线不是产品列表路线的唯一子项。
如何订阅特定的子路由参数?
【问题讨论】: