Mam trasy zorganizowane tak jak:

parent/:id
    |
    child
    |
    child

Czy mogę uzyskać param od składnika macierzystego przez:

ngOnInit() {
  this.route.params.subscribe((params) => {
      this.id = +params['id'];
  });
}

A następnie w jakiś sposób dołącz go jako wejście na {x0}}? Czy muszę wyciągnąć wartość z każdego dziecka w ten sam sposób, w jaki zrobiłem rodzic?

Co jest najlepszym sposobem , aby przejść param id z elementu nadrzędnego do wszystkich elementów dzieci?

5
Jamie Kudla 15 luty 2017, 21:24

2 odpowiedzi

Najlepsza odpowiedź

Niestety, nie ma prostego sposobu na dostęp do parametrów trasy rodziców i nie ma planów zmiany go # 12767, więc jedynym sposobem jest obejście przy użyciu usługi lub Localstorage, cokolwiek chcesz.

   class Service {
        public params:Subject<any> = new Subject<any>();

        public next(params):void { this.params.next(params); }
   }

   class Parent {
        constructor(service:Service, route:ActivatedRoute){
             activatedRoute.params.subscribe(params => service.next(params));
        }
   }

   class Child {
        constructor(service:Service){
             service.params.subscribe(params => console.log(params));
        }
   }

Oto kilka sposobów, które komponenty mogą interkomunikować:

Alexander Taylor 16 luty 2017, 18:07

Z routerem kątowym 5 (który wie około 2?), Nie byłbyś daleko; Jest również obiekt macierzysty, który jest również aktywowany.

W trasie dzieci możesz to zrobić:

ngOnInit() {
  this.route.parent.params.subscribe(params => {
    this.parentRouteId = +params["id"];
    console.log(this.parentRouteId);
  });
}

A twoja trasa musi być zdefiniowana w ten sposób:

const routes: Routes = [
  {
    path: ':id',
    component: MyComponent,
    children: [
      { path: '', redirectTo: '/my-page' },
      { path: 'my-page', redirectTo: component: MyChildComponent }
    ]
  },
];
7
VincentPerrin.com 5 kwiecień 2018, 20:22