我正在制作Chrome浏览器操作扩展程序。
我正在尝试将Angular 2应用程序加载到Chrome中的弹出窗口中。
我在使用Angular 1.5之前已经这样做了,但尝试使用Angular 2并收到错误。
未处理的承诺拒绝:没有设置基本href。请提供一个价值 对于APP_BASE_HREF标记或向文档添加基本元素。 ; 区域:;任务:Promise.then;值:错误:没有设置基本href。 请提供APP_BASE_HREF令牌的值或添加基数 元素到文档。(...)错误:没有设置基本href。请提供一个 APP_BASE_HREF令牌的值或向其添加基本元素 文档。
我已将<base href="/">
标记放入popu.html。但问题是,vendor.js和main.js被Chrome下载(并且在被popup.html加载之前),因此没有HTML页面可以放置<base href="/">
只是想知道如何解决这个问题。
Popup.html
<!doctype html>
<html>
<head>
<base href="/">
<meta charset="utf-8">
<title>FountainJS</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<link rel="icon" type="image/png" href="http://fountainjs.io/assets/imgs/fountain.png"/>
<link href="../styles/popup.css" rel="stylesheet">
</head>
<body>
<div style="width: 200px; height: 150px;">
<fountain-root>My Awesome Chrome Popup should load with Angular 2 right Here</fountain-root>
<script type="text/javascript" src="../scripts/vendor.js"></script>
<script type="text/javascript" src="../scripts/main.js"></script>
</div>
</body>
</html>
答案 0 :(得分:20)
您可以在代码中设置基本href
import { APP_BASE_HREF } from '@angular/common';
@NgModule({
providers: [
{ provide: APP_BASE_HREF, useValue: '/' }
]
})
class AppModule {}