Очистка фрагмента роутера в Angular 6 - PullRequest
0 голосов
/ 13 июня 2018

У меня есть угловое приложение, использующее Angular 6 и NgRX 6.

У меня есть сервер идентификации, с которым я общаюсь через неявный поток, который однажды перенаправляет обратно в мое приложение, имеет мой токен и т.д.еще на панели навигации.

Я хотел бы удалить этот фрагмент из URL и остаться на моем маршруте.

Например,

http://foo.com/bar/boo#key=value

Я хотел бы очистить это, как только я закончу ибыть оставленным на

http://foo.com/bar/boo

Я обрабатываю это следующим образом

 @Effect({ dispatch: false })
  persistSessionTokens$: Observable<void> = this.actions$.pipe(
    ofType<ActionWithPayload>(SET_SESSION_TOKENS),
    map(action => action.payload),
    tap(tokens => {
      persist(ID_TOKEN_STORAGE_KEY, tokens[ID_TOKEN_STORAGE_KEY]);
      persist(ACCESS_TOKEN_STORAGE_KEY, tokens[ACCESS_TOKEN_STORAGE_KEY]);

      const url = this.router.url;

      this.router.navigate([url], { replaceUrl: true });
    }),
    catchError(error => of({ type: SET_TOKEN_FAILURE, payload: error }))
  );

Однако это перенаправляет меня на http://foo.com/bar/

Мое заявление в этом случаеимеет базовый href bar

boo - это имя моего арендатора, поэтому важно, чтобы я сохранил эту структуру в URL.

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете использовать Location класс из @angular/common.Вот пример:

// This will give you current location path without including hash
// path(includeHash: boolean = false): string
const pathWithoutHash = this.location.path(false); 

// This changes the browsers URL to the normalized 
// version of the given URL, and replaces the 
// top item on the platform's history stack.
// replaceState(path: string, query: string = '', state: any = null): void
this.location.replaceState(pathWithoutHash);

Подробнее о Location

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...