簡體   English   中英

Angular路由器從根組件獲取子參數

[英]Angular router get child param from root component

我的app.component.html有這個結構:

<app-main-nav></app-main-nav>
<router-outlet></router-outlet>

這是我的路線:

const routes = [
  {path: "", redirectTo: "home", pathMatch: "full"},
  {
    path: "posts", component: PostsComponent, 
    children: [{
      path: ":id",
      component: PostComponent
    }];
  }
]

我試圖從我的MaiNavComponentPostComponent頁面訪問params ,但它會拋出一個錯誤。

export class MainNavComponent implements OnInit {

  constructor( private route: ActivatedRoute) {
    route.params.subscribe(console.log)
  }
}

我怎樣才能獲得:id的的PostComponentMainNavComponent

我試着這樣做:

 route.params.subscribe(console.log)

在這里我得到一個物體。

還有這個:

 route.firstChild.params.subscribe(console.log)

無法讀取null的屬性'params'

問題是ActivatedRoute僅在插座( route-outlet )中加載的組件內可用。 在外部組件中,您可以注入路由器並使用它如下:

export class MainNavComponent implements OnInit {

    constructor(private router: Router) {}

    ngOnInit() {

        // Fires when the url changes
        this.router.events.subscribe(data => {
            // Only handle final active route
            if (data instanceof NavigationEnd) {

                 // parsedUrl conatins params, queryParams 
                 // and fragments for the active route
                 let parsedUrl = this.router.parseUrl(this.router.url);

                 console.log(parsedUrl);
            }
        });
    }
}

我希望這能幫到您。

constructor( private router: Router, private activatedRoute: ActivatedRoute) { } ngOnInit() { this.loadParams(); } private loadParams(): void { this.router.events.subscribe(event => { if (event instanceof NavigationEnd) { let activatedRoute = this.activatedRoute.firstChild; while (!activatedRoute) { activatedRoute = activatedRoute.firstChild; } const value = activatedRoute.snapshot.paramMap.get('parmeter key'); } }); }

您必須快照以從URL.Uodate構造函數獲取ID,如下所示

constructor( private route: ActivatedRoute) {   
  }
ngOnInit() {
  // (+) converts string 'id' to a number
  let id = +this.route.snapshot.params['id'];


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM