W moim projekcie mam dwóch strażników. AuthGuard i PermissionGuard. Najpierw muszę uruchomić AuthGuard, a kiedy to się zakończy, a jeśli prawda, to zaczyna się pozwolenieGuard, ale teraz strażnicy pracują równolegle, a narzędzie PermissionsGuard nie działa dobrze. sposób, w jaki używałem tego problemu, to to, że nazwałem metodę AuthGuard CanActivate w Ochronie uprawnień, ale myślę, że jest na to lepszy sposób.Angular2 run Straż po rozwiązaniu innej osłony
Odpowiedz
Byłem w tej samej sytuacji kilka tygodni temu, więc postanowiłem napisać nieco "hacky" rozwiązanie, aby osiągnąć to poprzez wykorzystanie atrybutu data
obiektu definicji trasy.
Chodzi o to, aby zdefiniować własne straży (nazwijmy go MainGuard
), która będzie czytać atrybut danych (np guardsList
) z tablicą strażników wewnątrz MainGuard.canActivate
funkcji i wykonać je (poprzez wywołanie guardsList[i].canActive
) jeden po drugim w pętla. Będziesz musiał użyć aplikacji Injector
, aby móc zadzwonić pod numer canActivate
podanego strażnika.
robi się trochę bardziej skomplikowane, gdy chcesz wesprzeć Observable
, Promise
, a zwykły boolean
strażników pod jednym guardsList
tablicy, jak trzeba się zapisać i poczekać na zakończenie itp
I zostały wdrożone ten „hack” jako Angular Library który pozwala zrobić coś takiego:
const appRoutes: Routes = [
{
...
canActivate: [SequentialGuards],
data: { GUARDS_SEQ: [Guard1, Guard2, Guard3] }
...
}]
- 1. Run JQuery w kontekście innej ramki
- 2. Straż sprawdzanie lambdas
- 3. Przekierowanie Angular2 po zalogowaniu
- 4. Zapobieganie niszczeniu usługi Android po rozwiązaniu
- 5. Autofac - globalne oddzwanianie po rozwiązaniu obiektu
- 6. Osłony zatyczek modułów?
- 7. Straż wykonuje skrypty powłoki dwukrotnie
- 8. Dlaczego moje osłony kompilujące nie blokują wstawiania wielu definicji?
- 9. Xcode - bazgroły, krawędzie strażników i straż malloc
- 10. Po prostu wyszukaj ciąg w całym rozwiązaniu netbeans
- 11. Dlaczego program javascript ES6 obiecuje kontynuować wykonywanie po rozwiązaniu?
- 12. Po oddzielnych projektach w jednym rozwiązaniu ASP.NET MVC 5
- 13. Dodaj kolumnę po innej kolumnie
- 14. Angular2 - Dodaj klasę do pozycji po kliknięciu
- 15. Dezaktywuj przycisk po kliknięciu w Angular2
- 16. Prośba o uprawnienia w Run Run Ionic
- 17. Jak zmienić C++ to osłony w CLionie?
- 18. Dlaczego nie ma osłony w C++ domyślnie?
- 19. Czy #pragma raz dodaje osłony włączające?
- 20. SendBird tworzyć GroupChannel z pliku jako osłony
- 21. Dlaczego niewyczerpujące osłony powodują niepowodzenie dopasowania wzorca?
- 22. Tworzenie bezpiecznej dla wyjątków osłony klasy
- 23. Maven Run Project
- 24. angular2.js vs angular2.dev.js
- 25. Grails 3 run-app nie powraca po bootRun
- 26. Wyjście try/catch, aby zapobiec kod po czym z run
- 27. Run trzy skrypt jednocześnie
- 28. NgZone/Angular2/Ionic2 TypeError: Nie można odczytać właściwości 'run' z undefined
- 29. Playframework run i Global.onStart
- 30. Android: Przekierowanie do innej aktywności po opóźnieniu
może [ta odpowiedź] (http://stackoverflow.com/a/40590812/6942210) może pomóc. Myślę, że ma ten sam problem. –
dzięki, odpowiedź na pytanie, które wymieniłeś, jest taka sama jak ja, ale jak powiedziałem, myślę, że może być lepszy sposób. –
@ hosseinahmadi. Czy nadal potrzebujesz pomocy w tym zakresie? – AngularChef