Изменить значения в <head>HTML в Angular Dart - PullRequest
0 голосов
/ 23 октября 2018

так что я относительно новый Angular Dart и Dart в целом, и я пытаюсь создать простое веб-приложение.

Когда я использовал для разработки PHP, у меня всегда был конфигурационный файл, который определял, в какой среде приложениеработал и решил настроить себя по-разному.

Я пытаюсь понять, как добиться чего-то похожего в Angular Dart.В частности, в качестве примера для начала я хочу установить другой базовый href в зависимости от URL, который загружает приложение.Когда вы читаете документацию, она говорит, что во время разработки вы должны установить базовый href следующим образом:

<script>
  // WARNING: DO NOT set the <base href> like this in production!
  // Details: https://webdev.dartlang.org/angular/guide/router
  (function () {
    var m = document.location.pathname.match(/^(\/[-\w]+)+\/web($|\/)/);
    document.write('<base href="' + (m ? m[0] : '/') + '" />');
  }());
</script>

Но для распространения он должен быть установлен так:

<base href="/">

Все этодолжен быть расположен в разделе <head> HTML-страницы, поэтому я хотел бы сделать здесь какое-то утверждение if.Пример того, как я это делаю в PHP:

<head>
   <?php if(DEV) { ?>
      // Do the development base href
   <?php } else if(PROD) { ?>
      // Do the production base href
   <?php }?>
</head>

Так что мой вопрос в принципе таков: возможно ли сейчас что-то подобное в Angular Dart?

1 Ответ

0 голосов
/ 23 октября 2018

Вы не можете выполнить связывание в <head> с Angular.
Я думаю, что есть еще способ передать переменные "среды" в приложение, используя -D=PROD=...
, и тогда вы можете использовать const isProd = bool.fromEnvironment('PROD')(см. также https://github.com/dart-lang/site-www/issues/404)
, а затем используйте dart:html для управления DOM.

Я некоторое время не использовал это в сети, и я не уверен, что он все еще поддерживается в Dart 2.

( Обновление найдено https://github.com/dart-lang/build/issues/1053)

Если '<base href="..."> только для угловой маршрутизации, то лучше использовать

import 'package:angular_router/angular_router.dart';

и добавление

ValueProvider<String>.forToken(appBaseHref, '/'),

для провайдеров Angular.

Я также использую скрипт сборки, который копирует такие файлы, как

cp web/run_config_prod.dart web/run_config.dart
webdev build ...
cp web/run_config_dev/run_config.dart

, чтобы изменить некоторые настройки в зависимости от целевой среды.

...