【问题标题】:Angular Breadcrumb that shows the route the user took to reach the current pageAngular Breadcrumb,显示用户到达当前页面的路线
【发布时间】:2019-11-20 11:49:22
【问题描述】:

几天前我开始使用 Angular。我必须向一个站点添加一个可点击的面包屑,该站点向用户显示登陆该页面所采取的路线。例如,可以从主页和商店访问产品页面。 如果用户在主页中并点击产品,这就是我想要显示的内容:

Home > Products

但是,如果他的用户在主页中,点击商店,然后点击产品,我想要这个:

Home > Shop > Products

请注意,app-routing.module.ts Products 不是 Shop 的子代,Shop 也不是 Home 的子代。我无法修改路由,因此整个站点中的每个页面都是“独立的”。

这可能吗?您有任何可能对我有帮助的建议或实施吗?谢谢!

【问题讨论】:

标签: angular routing angular-routing breadcrumbs


【解决方案1】:

路由数据是我最喜欢的实现您发布的目标的选项之一。

在您的路由配置数组中:

  {
    path: 'Shop',
    component: ShopComponent,
    data: { breadcrumbs: ['home'] }
  }, {
    path: 'Products',
    component: ProductsComponent,
    data: { breadcrumbs: ['home', 'Shop'] }
  },

您可以在组件中使用它,例如:

constructor(private activatedRoute: ActivatedRoute) { }

  ngOnInit() {
    this.activatedRoute.data.subscribe(d => {
      console.log(d.breadcrumbs) // ['home']
    })
  }

您可以阅读更多内容:https://angular.io/guide/router#configuration

【讨论】:

  • 在您的示例中,操作必须为同一个组件创建两条路由。例如:home/productshome/shop/products,是你的意思吗?还是您可能在问题中错过了这一点?
  • @Silvermind 您可以只添加一个路径,其中包含许多面包屑数据
  • 我知道,但他希望同一个 url 有不同的面包屑:当 url 是 /shop/products 时,面包屑可以是不同的 Home > Products Home > Shop > Products。因此不取决于路线,而是取决于点击路径。
  • 在回答之后,对于每个路径,可以设置一个标识符,比如说“路径”,同时从家庭或商店导航到产品,例如在本地/会话存储“路径:家庭”或路径“商店”中设置。路由数组中的下一个数据可以定义为 data : {breadcrumbs: [{path:'home', value: 'home/products'}, {path:'shop', value:'home/shop/products'}]} .那么这只是从本地/会话存储中获取“路径”值并过滤产品激活路由附带的数据数组的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多