在Angular Dart中更改HTML中的值

时间:2018-10-23 11:42:36

标签: dart angular-dart

所以我是相对较新的Angular Dart和Dart,并且我正在尝试创建一个简单的webapp。

当我以前进行PHP开发时,我总是拥有一个配置文件,该文件确定应用程序在什么环境上运行,并决定以不同的方式进行设置。

我试图弄清楚如何在Angular Dart中实现类似的目标。专门作为开始的示例,我想根据加载应用程序的URL设置不同的基本href。当您阅读文档时,它说在开发过程中应该像这样设置基本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="/">

所有这些都必须位于HTML页面的<head>部分中,因此我想在此处执行某种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 :(得分:1)

您无法在Angular的<head>中进行绑定。
我认为仍然可以使用-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="...">仅用于Angular路由,那么最好使用

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

根据目标环境更改某些设置。