2017-07-28 14 views
5

Chcę podać stałą w mojej aplikacji w oparciu o QueryParam z adresu URL.Jak uzyskać QueryParam w dostawcy fabryki (Angular4)

localhost:4200?flag=true 

W moich dostawców modułów dodałem

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

Więc jestem zainteresowany, czy istnieje sposób, jak to zrobić bez parsowania URL ręcznie

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

Jakie jest obecne zachowanie? –

+0

Działa tak, jak się spodziewam, gdy używam 'window.location.search' , ale chciałbym wiedzieć, czy jest na to" kątowa "metoda. – mgrinko

+0

Nie ma tu kanciastego sposobu. –

Odpowiedz

1

Co za pomocą kątowego Router?

Parametry utworów routera zapytań, więc powinny one być dostępne na ciebie początkowy trasy „/”

komponent korzeń może mieć trasę, która pozwala to

constructor(private route: ActivatedRoute) {} 

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

    }); 
    } 
+0

Ponieważ twój kod będzie działał tylko wewnątrz komponentu. Ale przed otwarciem jakiegokolwiek składnika muszę sprawdzić, czy użytkownik może go otworzyć. – mgrinko

+0

Wysyłam więc prośbę do API od strażników. Te żądania wymagają wysłania dodatkowego nagłówka. Właśnie dlatego rozszerzyłem Http i BaseRequestOptions i dodałem wymagane nagłówki do każdego żądania. Wstrzykuję tam flagę. – mgrinko

+0

Zrób to w swoim głównym komponencie (zazwyczaj app.component), który chcesz załadować przed podjęciem decyzji o użytkownikach itp. –

Powiązane problemy