Заполните маршрут внешним URL из конфигурации - PullRequest
1 голос
/ 05 июня 2019

Мои маршруты определены как:

export const routes: Routes = [
  { path: "", redirectTo: "/datasets", pathMatch: "full" },
  {
  path: "help/youtube",
  canActivate: [RedirectGuard],
  component: RedirectGuard,
  data: {
    externalUrl:  "https://youtube.com"
  }
},
...
    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule {}

Где защита от перенаправления - это модуль, который обрабатывает внешние URL-адреса.

Вместо жесткого кодирования externalUrl мне нужно извлечь его из моего appConfig, но я не могу получить доступ к appConfig без такого конструктора, как:

constructor(@Inject(APP_CONFIG) private appConfig) {}

как appConfig настроен как модуль с токеном впрыска, например:

export const APP_CONFIG = new InjectionToken<AppConfig>("app.config");

Поэтому я попытался добавить этот Inject в мой AppRoutingModule, но безуспешно.

Как получить доступ к appConfig для заполнения этого внешнего URL-адреса?

1 Ответ

0 голосов
/ 05 июня 2019

Итак, я нашел решение.

доступ к appConfig из моего редиректора (который я взял с здесь )

@Injectable()
export class RedirectGuard implements CanActivate {

  constructor(private router: Router, @Inject(APP_CONFIG) public appConfig: AppConfig) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {


      window.location.href = this.appConfig[route.data["externalUrl"]];
      return true;

  }
}

Передавая имя элемента конфигурации как data["externalUrl"], которое я вскоре переименую во что-то более подходящее. Это будет означать, что жестко закодированные URL не будут работать, но я могу жить с этим.

Определение маршрута в app-routing.module выглядит следующим образом:

{
    path: "help/ingestManual",
    canActivate: [RedirectGuard],
    component: RedirectGuard,
    data: {
      externalUrl:  "ingestManual"
    }
  }

Где ingestManual - элемент, определенный в моем конфигурационном файле.

Это позволило мне перенаправить маршруты приложений на внешние URL-адреса.

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