组件加载后附加到URL的Base标记的值

时间:2017-06-30 17:59:15

标签: asp.net-mvc angular

我有一个使用Angular 4的ASP.NET MVC应用程序。在我的布局中,我有一个基本标记,如下所示:

<base href="/src/">

我正在设置所有内容,我刚刚添加了Angular Routing。现在,在我的基本组件加载后,我的网址附加了&#39; src&#39;。

这是我的路线档案:

import { Routes } from '@angular/router';

import { HomeComponent } from './Components/Home/home.component';

export const AppRouting: Routes = [
    { path: '', component: HomeComponent }
];

在添加路由之前我没有看到这个。

2 个答案:

答案 0 :(得分:1)

基本标记的主要用途是用于路由。这来自文档:

  

大多数路由应用程序都应该添加一个元素   index.html作为标记中的第一个子节点告诉路由器如何   撰写导航网址。

     

如果app文件夹是应用程序根目录,则与样本一样   应用程序,完全按照此处所示设置href值。

https://angular.io/guide/router#base-href

在开发时,它通常设置为“/”,因此路由将从root运行。在部署时,将其更改为包含应用程序的服务器上的文件夹。

答案 1 :(得分:1)

我能解决这个问题。作为参考,我的app文件夹位于src目录下,而不是在我的项目的根目录下。这就是我所做的。

将基本标记更改为:

<base href="/">

从以下网址更新我的main.js电话:

<script>
    System.import('main.js').catch(function (err) { console.error(err); });
</script>

为:

<script>
    System.import('src/main.js').catch(function (err) { console.error(err); });
</script>

然后在我的systemjs.config.js中,我不得不改变这些行:

map: {
    //app is within the app folder
    'app': 'app',

为:

map: {
    //app is within the app folder
    'app': 'src/app',

我也不得不改变:

packages: {
  app: {
    defaultExtension: 'js',
    meta: {
      './*.js': {
        loader: 'systemjs-angular-loader.js'
      }
    }
},

为:

packages: {
  app: {
    defaultExtension: 'js',
    meta: {
      './*.js': {
        loader: 'src/systemjs-angular-loader.js'
      }
    }
},