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

    { 

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

    } 


] 

Nếu tôi có cấu hình tuyến đường được hiển thị ở trên làm cách nào để truy cập thuộc tính data từ một số chỉ thị.Truy cập dữ liệu tuyến đường từ các chỉ thị trong angular2

@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> 

Trong hello chỉ thị làm thế nào tôi có thể nhận được cấu hình đường cho giá trị các thuộc tính của routerLink?

+0

Bạn đã đưa ra giải pháp cho @Lekhnath này? – Spikeh

+0

@ Spikeh Đáng buồn là tôi không thể tìm ra giải pháp nào cho việc này. – Lekhnath

Trả lời

1

Bạn có thể đăng ký tham số tuyến đường bằng cách đặt nó vào trong lớp Thành phần của bạn. & có private route: ActivatedRoute trong constructor

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

Bạn cũng có thể sử dụng this.route.snapshot.data để lấy dữ liệu thông qua trong lộ trình, định nghĩa.

+0

Câu trả lời này thiếu để giải quyết vấn đề của tôi. Tôi nên cung cấp một số liên kết đến dịch vụ nào để nó mang lại cho tôi một lộ trình/routeConfiguration/routeData. Nó có thể là bất kỳ liên kết không chỉ là tuyến đường hiện tại/kích hoạt. – Lekhnath

+0

Tôi có thể tìm thấy 'RouteData' ở đâu trong '@ angular/router @ 3.0.0-beta.2'? – Lekhnath

+1

'params' nên được thay đổi thành' dữ liệu' – mrgoos

5

(RC6): Bạn cần phải nhập khẩu:

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

Sau đó, trong constructor của bạn:

constructor(private route: ActivatedRoute) { }

Lớp nên implements OnInit theo cách này:

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

Đây là trường hợp URL của bạn không phải là động. Nếu năng động, bạn nên sử dụng một người quan sát và không chụp ảnh. p.s. đối với cha mẹ của cha mẹ chỉ sử dụng: this.route.snapshot.parent.data['name']

+0

Điều này có thể được sử dụng để truy cập dữ liệu tuyến đường được kích hoạt nhưng tôi không cố gắng lấy dữ liệu tuyến đường được kích hoạt từ một số tuyến đường Thành phần thay vì tôi đang cố gắng lấy dữ liệu tuyến đường từ một số liên kết, nói: ['app/home']. – Lekhnath

+0

Vâng, nếu đó là một trong các bậc cha mẹ bạn có thể sử dụng 'this.route.snapshot.parent.data ['name']' như được đề xuất. Nếu không, bạn có thể sử dụng bất kỳ giao tiếp thành phần nào khác được đề xuất ở đây: https://angular.io/docs/ts/latest/cookbook/component-communication.html. Tốt nhất có thể là qua IMO dịch vụ. – mrgoos

+2

Hãy nhìn vào phương thức 'ngOnInit' route của tôi như thế nào tôi đang cố gắng để có được giá trị thuộc tính' routerLink' và dựa trên giá trị đó tôi muốn một bí danh của cấu hình tuyến đường ánh xạ liên kết/đường dẫn. – Lekhnath

Các vấn đề liên quan