【问题标题】:Angular 2 routing to page with pipe setAngular 2路由到带有管道集的页面
【发布时间】:2016-12-09 13:15:16
【问题描述】:

我有一个包含品牌列表的页面,然后是另一个包含从服务中引入的每个品牌的所有产品的页面。可以使用管道按品牌过滤产品页面。我想做的很简单。

从包含品牌列表的页面中,我希望能够通过单击品牌链接转到过滤后的产品页面。这是一般产品页面,但已在品牌上设置了过滤器。我也希望能够在我在那里时更改过滤器。

例如,我在页面上有一个鞋品牌列表: 阿迪达斯、耐克、彪马、锐步 当我点击阿迪达斯时,它会将我带到动态产品页面,其中包含阿迪达斯鞋子过滤的内容。但是如果我想看耐克鞋,我可以在我所在的产品页面顶部更改过滤器,让它按耐克鞋过滤。

到目前为止,我已经浏览了 Angular.io 文档和 Meteor 教程,但没有成功。我已经尝试在链接(routerlink="['/product-page, product.brand']")中传递参数并设置激活路由,但我不确定它是否适用于此。 有什么想法吗?

品牌页面上的链接

<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},

【问题讨论】:

  • 请张贴代码,展示您尝试过的内容以及失败的地方。
  • 你看过 angular2 在其网站上的第一个教程吗?它被称为英雄教程,它完全符合您的要求。看看angular.io/docs/ts/latest/tutorial

标签: angular angular2-routing angular2-directives


【解决方案1】:

将品牌 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>

【讨论】:

  • 这正是我想要的。我们将在很多地方使用它,所以我很感激你把它分解。谢谢!
  • 我将如何传递默认值以便我仍然可以访问产品页面?或者我将如何配置路由?我仍然需要访问“/products-page”
  • 只需添加两条路线 - {path: 'product-page', component: ProductPageComponent}, {path: 'product-page/:brand', component: ProductPageComponent} 并检查您的构造函数中是否填充了品牌。
  • 没关系。我刚刚添加了一个空白的“/product-page”路由。再次感谢你的帮助。 (我们同时写了这个我猜哈哈”
  • 哈,听起来像!乐意效劳!如果您能将上面的帖子标记为答案,如果您认为它适当地回答了您的原始问题,我将不胜感激:)
猜你喜欢
  • 2017-05-30
  • 1970-01-01
  • 2017-10-06
  • 2018-02-02
  • 2016-07-07
  • 2017-03-04
  • 2020-09-12
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多