2017-06-30 32 views
5

Có lẽ tôi đang thiếu thứ gì đó ??Góc 2 Tuyến đường được kích hoạt

Trong một thành phần Angular 2, tôi chỉ đơn giản là cố gắng để có được đầy đủ kích hoạt tuyến.

Tôi không muốn sử dụng location.href.

constructor của tôi là như sau:

constructor(private route: ActivatedRoute) {} 

Và trong ngOnInit() tôi đã cố gắng:

this.route.data.url 

this.route.snapshot 

Không làm việc.

Bất kỳ trợ giúp nào được đánh giá cao.

+0

'this.route.url'. – developer033

+0

vì vậy tôi sẽ giả sử tôi phải phân tích mảng và tái xây dựng các url với điều này? Tôi đã hy vọng URL tồn tại như một chuỗi trong dữ liệu bộ định tuyến ở đâu đó. –

+0

@MikeSomeone kiểm tra câu trả lời của tôi dưới đây, hy vọng nó sẽ giúp :) –

Trả lời

7

Bạn không cần phải sử dụng ActivatedRoute cho điều đó, bạn cần phải sử dụng Router để truy vấn cho URL hiện tại trong hình thức chuỗi:

constructor(r: Router) { 
    console.log(r.url); 
} 
+0

CẢM ƠN BẠN, cả câu trả lời này và câu trả lời của Hamed đều hoạt động. Có thực hành tốt nhất ở đây không? –

+0

@MikeSomeone, tôi sẽ tranh luận cho cách tiếp cận của tôi tất nhiên vì đây là API công cộng tiêu chuẩn cho bộ định tuyến –

+0

đã đồng ý và không yêu cầu phương thức đường dẫn(). –

3

giải pháp đơn giản hơn là sử dụng lớp LocationStrategy từ @angular/common để đại diện và đọc trạng thái tuyến đường trực tiếp từ URL của trình duyệt thuận tiện hơn this.router.url khi cố gắng lấy URL của bộ định tuyến dưới dạng chuỗi.

import {LocationStrategy} from '@angular/common'; 


export class MyComponent implements OnInit { 

    constructor(private url:LocationStrategy) { } 

    ngOnInit() { 
      //this will log the current url 
     console.log(this.url.path()); 
    } 

} 
+0

THANK YOU, cả hai câu trả lời này và Maximus đều hoạt động. Có thực hành tốt nhất ở đây không? –

+0

vui vì điều này đã giúp! nhưng tôi không nghĩ rằng có một thực hành tốt nhất ở đây nhưng có các tùy chọn và đây là một lựa chọn khác: bạn có thể tiêm 'RouterStateSnapshot' từ phương thức khởi tạo' @ angular/router' '(state: RouterStateSnapshot)' và sử dụng nó như thế này ' cho phép url: string = state.url; 'và bằng cách này, phương thức này được sử dụng trong hướng dẫn bộ định tuyến tài liệu chính thức. –

+1

@HamedBaatour, điều này sẽ chỉ hiển thị một phân đoạn url, giống như tuyến đường được kích hoạt –

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