2016-09-08 10 views
6
const APP_ROUTES: RouterConfig = [ 

    { 

     path: 'app/home', 
     component: HomeComponent, 
     data: { 
      name: 'Home' 
     } 

    } 


] 

Jeśli mam konfigurację trasy pokazaną powyżej, w jaki sposób uzyskać dostęp do jej właściwości data z niektórych dyrektyw.Uzyskiwanie dostępu do danych tras z dyrektywami kątowymi2

@Directive({ 
    name: 'hello' 
}) 

class HelloDirective { 
@Input('routerLink') link: string[]; 

ngOnInit() { 
    //HOW CAN I GET ROUTE AND ITS DATA FROM PATH/URL ??? 

    //const magicallyGrabbedRoute = pleaseGiveMeMyRouteFrom(this.link); 
    //const myData = magicallyGrabbedRoute.data; 

} 

} 

<a hello [routerLink]="['app/home']"> Go Home </a> 

w dyrektywie hello jaki sposób można uzyskać konfigurację trasy dla wartości atrybutu routerLink?

+0

Czy znalazłeś rozwiązanie tego @Lekhnath? – Spikeh

+0

@Spikeh Niestety nie mogłem znaleźć rozwiązania dla tego. – Lekhnath

Odpowiedz

1

Możesz subskrybować parametry trasy, umieszczając ją w klasie Component. & mieć private route: ActivatedRoute w konstruktorze

this.sub = this.route 
    .params //.data //--> use data to retrieve route data 
    .subscribe(params => { 
    console.log(params['id']); 
    }); 

Można również użyć this.route.snapshot.data odzyskać przekazane dane w defination trasy.

+0

Ta odpowiedź nie rozwiązuje mojego problemu. Do jakiej usługi mam podać link, aby w zamian dostarczył mi trasę/routeConfiguration/routeData. Może to być dowolny link nie tylko do bieżącej/aktywowanej trasy. – Lekhnath

+0

Gdzie mogę znaleźć "RouteData", którego nie ma w "@atular/router @ 3.0.0-beta.2"? – Lekhnath

+1

'params' powinien zostać zmieniony na' dane' – mrgoos

5

(RC6): Trzeba importować:

import { ActivatedRoute } from '@angular/router';

Następnie w konstruktorze:

constructor(private route: ActivatedRoute) { }

Klasa powinna implements OnInit ten sposób:

ngOnInit() { const myData = this.route.snapshot.data['name']; }

Jest to na wypadek, gdyby Twój adres URL nie był dynamiczny. Jeśli jesteś dynamiczny, powinieneś użyć obserwatora, a nie migawki. p.s. dla rodziców rodziców po prostu użyj: this.route.snapshot.parent.data['name']

+0

Można tego użyć, aby uzyskać dostęp do danych aktywowanych tras, ale nie próbuję uzyskać aktywowanych danych trasy z jakiegoś szlaku Komponent zamiast próbuję uzyskać dane trasy z jakiegoś linku, powiedzmy: ['app/home']. – Lekhnath

+0

Cóż, jeśli jest to jedno z rodziców, możesz użyć 'this.route.snapshot.parent.data ['name']' jak sugeruje. Jeśli nie, możesz skorzystać z jakiejkolwiek innej sugerowanej tutaj komunikacji komponentów: https://angular.io/docs/ts/latest/cookbook/component-communication.html. Najlepsze może być za pośrednictwem usługi IMO. – mrgoos

+2

Proszę spojrzeć na moją metodę 'ngOnInit', w jaki sposób próbuję uzyskać wartość atrybutu' routerLink' i na podstawie tej wartości potrzebuję aliasu konfiguracji trasy, który odwzorowuje łącze/ścieżkę. – Lekhnath

Powiązane problemy