2017-07-28 19 views
5

Tôi muốn cung cấp một hằng số trong ứng dụng dựa trên QueryParam từ url.Cách nhận QueryParam trong nhà cung cấp nhà máy (Angular4)

localhost:4200?flag=true 

Trong các nhà cung cấp mô-đun của tôi, tôi thêm

{ provide: FLAG, useFactory: FlagFactory, deps: [...] } 

Vì vậy, tôi đang quan tâm nếu có một cách làm thế nào để làm điều đó mà không cần phân tích url bằng tay

function FlagFactory() { 
    return location.search.includes('flag'); 
} 
+0

hành vi hiện tại là gì? –

+0

Nó hoạt động như tôi mong đợi khi tôi sử dụng 'window.location.search' nhưng tôi muốn biết nếu có một 'góc' cách để làm điều đó – mgrinko

+0

Không có cách góc cạnh. –

Trả lời

1

gì về việc sử dụng góc Router?

Các thông số định tuyến theo dõi truy vấn, vì vậy họ nên có sẵn trên bạn đường ban đầu '/'

thành phần gốc của bạn có thể có một tuyến đường cho phép này

constructor(private route: ActivatedRoute) {} 

    ngOnInit() { 
    this.sub = this.route.params.subscribe(params => { 
     this.flag = params['flag']; 

    }); 
    } 
+0

Bởi vì mã của bạn sẽ chỉ hoạt động bên trong một thành phần. Nhưng trước khi mở bất kỳ thành phần nào tôi cần kiểm tra xem người dùng có thể mở nó không. – mgrinko

+0

Vì vậy, tôi đang gửi yêu cầu tới API từ các vệ sĩ. Và các yêu cầu này yêu cầu Tiêu đề bổ sung phải được gửi. Đó là lý do tại sao tôi mở rộng Http và BaseRequestOptions và thêm các tiêu đề cần thiết cho mỗi yêu cầu. Tôi đang tiêm cờ ở đó. – mgrinko

+0

làm điều đó trong thành phần gốc của bạn (thường app.component) mà bạn sẽ muốn tải trước khi đưa ra bất kỳ quyết định nào về người dùng, v.v. –