Angular 2 路由到带有管道集的页面
Angular 2 routing to page with pipe set
我有一个包含品牌列表的页面,然后是另一个包含从服务中引入的每个品牌的所有产品的页面。可以使用管道按品牌过滤产品页面。我想做的很简单
从包含品牌列表的页面中,我希望能够通过单击品牌 link 转到过滤后的产品页面。这是一般产品页面,但已经在品牌上设置了过滤器。我也想在现场更换过滤器。
例如,我在一个页面上有一个鞋子品牌列表:
阿迪达斯、耐克、彪马、锐步
当我点击阿迪达斯时,它会将我带到动态产品页面,其中包含由阿迪达斯鞋履过滤的内容。但是如果我想看耐克鞋,我可以在我所在的产品页面顶部更改过滤器,使其按耐克鞋过滤。
我已经查看了 Angular.io 文档和 Meteor 教程,但到目前为止没有成功。我尝试在 link (routerlink="['/product-page, product.brand']"
) 中传递参数并设置 activatedRoute,但我不确定它是否适用于此处。
有什么想法吗?
Link 在品牌页面上
<a [routerLink]="['/product-page']">
<div class="packs adidas">
<!--<p>ADIDAS</p>-->
</div>
</a>
过滤器标记
<div class="filter">
<label for="filter">FILTER</label>
<div class="select-arrows-wrapper">
<select name="filter" id="brand-filter" [(ngModel)]="productName">
<option [value]="null">All Brands</option>
<option *ngFor="let product of products | async | duplicate:'productId'" [value]="product.productName">{{product.productName}}</option>
</select>
</div>
</div> <!--end filter-->
相关路线
{path: 'customer-brands', component: CustomerBrandsComponent},
{path: 'product-page', component: ProductPageComponent},
将品牌 ID 添加到您的产品页面路由,然后在您的 ProductPageComponent 中读取该 ID。
例如:
{path: 'product-page/:brand', component: ProductPageComponent}
然后,在您的 ProductPageComponent 中,将 ActivatedRoute 注入构造函数,并检索 ID,如下所示:
import { ActivatedRoute } from '@angular/router';
public brand string;
constructor(private route: ActivatedRoute) {
this.brand = route.snapshot.params['brand']);
}
您现在可以使用变量 brand
来过滤您的数据。
您还需要更改您的 routerLink,以便将品牌附加到 url 的末尾 - 例如:
<a [routerLink] ="['/product-page/' + product.brand]">Test</a>
我有一个包含品牌列表的页面,然后是另一个包含从服务中引入的每个品牌的所有产品的页面。可以使用管道按品牌过滤产品页面。我想做的很简单
从包含品牌列表的页面中,我希望能够通过单击品牌 link 转到过滤后的产品页面。这是一般产品页面,但已经在品牌上设置了过滤器。我也想在现场更换过滤器。
例如,我在一个页面上有一个鞋子品牌列表: 阿迪达斯、耐克、彪马、锐步 当我点击阿迪达斯时,它会将我带到动态产品页面,其中包含由阿迪达斯鞋履过滤的内容。但是如果我想看耐克鞋,我可以在我所在的产品页面顶部更改过滤器,使其按耐克鞋过滤。
我已经查看了 Angular.io 文档和 Meteor 教程,但到目前为止没有成功。我尝试在 link (routerlink="['/product-page, product.brand']"
) 中传递参数并设置 activatedRoute,但我不确定它是否适用于此处。
有什么想法吗?
Link 在品牌页面上
<a [routerLink]="['/product-page']">
<div class="packs adidas">
<!--<p>ADIDAS</p>-->
</div>
</a>
过滤器标记
<div class="filter">
<label for="filter">FILTER</label>
<div class="select-arrows-wrapper">
<select name="filter" id="brand-filter" [(ngModel)]="productName">
<option [value]="null">All Brands</option>
<option *ngFor="let product of products | async | duplicate:'productId'" [value]="product.productName">{{product.productName}}</option>
</select>
</div>
</div> <!--end filter-->
相关路线
{path: 'customer-brands', component: CustomerBrandsComponent},
{path: 'product-page', component: ProductPageComponent},
将品牌 ID 添加到您的产品页面路由,然后在您的 ProductPageComponent 中读取该 ID。
例如:
{path: 'product-page/:brand', component: ProductPageComponent}
然后,在您的 ProductPageComponent 中,将 ActivatedRoute 注入构造函数,并检索 ID,如下所示:
import { ActivatedRoute } from '@angular/router';
public brand string;
constructor(private route: ActivatedRoute) {
this.brand = route.snapshot.params['brand']);
}
您现在可以使用变量 brand
来过滤您的数据。
您还需要更改您的 routerLink,以便将品牌附加到 url 的末尾 - 例如:
<a [routerLink] ="['/product-page/' + product.brand]">Test</a>