Angular `面包屑`-累积,移出页面时不重置

Angular `面包屑`-累积,移出页面时不重置,angular,router,breadcrumbs,angular8,Angular,Router,Breadcrumbs,Angular8,我正在尝试用角形路由器构建一个面包屑。问题是,我无法重置用户从页面出来时的值 当页面刷新时,除非我使用路由,否则面包屑不会显示 面包屑没有重置,它只是累积了我访问的所有路线 如何修复它?有人帮我吗 ts文件: import { Component, OnInit } from '@angular/core'; import { Router, ActivatedRoute, RoutesRecognized, NavigationEnd, Params, PRIMARY_OUTLET } fro

我正在尝试用角形路由器构建一个
面包屑
。问题是,我无法重置用户从页面出来时的值

  • 当页面刷新时,除非我使用路由,否则面包屑不会显示
  • 面包屑没有重置,它只是累积了我访问的所有路线
  • 如何修复它?有人帮我吗

    ts文件:

    import { Component, OnInit } from '@angular/core';
    import { Router, ActivatedRoute, RoutesRecognized, NavigationEnd, Params, PRIMARY_OUTLET } from '@angular/router';
    import { IBOBreadCrumb } from './../../models/models';
    import { filter, map } from 'rxjs/operators';
    
    
    @Component({
        selector: 'bread-crumbs',
        templateUrl: './bread-crumbs.component.html',
        styleUrls: ['./bread-crumbs.component.scss']
    })
    export class BreadCrumbsComponent implements OnInit {
    
        breadcrumbs = [];
    
        constructor(
            private activatedRoute: ActivatedRoute,
            private router: Router) { }
    
        ngOnInit() {
    
            this.breadcrumbs = [];
    
            this.router.events
                .pipe(filter(event => event instanceof NavigationEnd))
                .pipe(map(() => this.activatedRoute))
                .pipe(map((route) => {
                    while (route.firstChild) { route = route.firstChild; }
                    return route;
                }))
                .pipe(filter(route => route.outlet === PRIMARY_OUTLET))
                .subscribe(route => {
    
                    const snapshot = this.router.routerState.snapshot;
                    const url = snapshot.url;
                    const routeData = route.snapshot.data;
    
                    const label = routeData['breadcrumb'];
                    const params = snapshot.root.params;
    
                    this.breadcrumbs.push({
                        url: url,
                        label: label,
                        params: params
                    });
    
                });
    
    
    
        }
    
    }
    
    html文件:

    <nav aria-label='breadcrumb'>
      <ol class='breadcrumb'>
        <li *ngFor='let breadcrumb of breadcrumbs'>
          <a [routerLink]='[breadcrumb.url, breadcrumb.params]' routerLinkActive='active'>{{ breadcrumb.label }}</a> ::|::
        </li>
      </ol>
    </nav>  
    
    
    
    {{breadcrumb.label}:::::
    
    
    问题1可能是因为您的代码在所有导航都已完成时运行,所以不会触发任何事件。问题2可以通过移动这个来轻松解决。breadcrumbs=[];在订阅中..作为附加注释-为什么要使用所有管道?请检查此回购协议。尝试在面包屑后面使用服务@Mike如果我错了,你能简化我的代码吗?我有嵌套的孩子,所以问题提出了