2016-09-08 41 views
0

我在ASP.NET MVC 5項目中使用AngularJS 2,我不使用Angular提供的路由,只依賴於MVC路由策略。AngularJS 2受ASP.NET MVC中的URL影響

奇怪的是,似乎AngularJS看的URL,只有當我的路線「域名/控制器」上,如果我的路線爲「域名/控制器/」上加載正確「域名/控制器/動作」我的角的應用程序沒有加載,我必須在瀏覽器中出現以下錯誤:

enter image description here

我用下面的腳本加載引導程序我:

<script src="~/Scripts/systemjs.config.js"></script> 
<script> 
    System.import('../tsScripts/boot').catch(function (err) { 
     console.error(err); 
    }); 
</script> 

我boot.ts文件:

///<reference path="./../typings/globals/core-js/index.d.ts"/> 
import {bootstrap} from '@angular/platform-browser-dynamic'; 
import {HTTP_PROVIDERS} from '@angular/http'; 

import {AppComponent} from './app'; 

bootstrap(AppComponent, [HTTP_PROVIDERS]); 

我不知道爲什麼角(與框架的未來或另一部分)不兼容與MVC路由,或者什麼是錯我的執行。

+2

Angular2是一個單頁面應用程序框架,所以沒有使用它的路由器類型來破壞整個想法。看起來你有SystemJs配置的問題。 – rook

+0

我懷疑它也在SystemJS配置文件中。您可能需要發佈內容。它定義從哪裏下載文件。基礎路徑需要根據當前路線進行更新。 (但是正如@rook所提到的,由於Angular 2不打算在用戶瀏覽時反覆加載,所以不太可能這樣做)。 – WiredPrairie

+0

這是我的SystemJs配置http://pastebin.com/2JyvhcNK 我對AngularJs感興趣,因爲它的MV *功能,但我想保留從ASP.NET MVC的導航/路由/身份驗證策略。但它似乎不是我需要的好工具。 – NicoC

回答

1

我遇到了同樣的問題, 我根本解決它把這個代碼放到_Layout.cshtml(以便適用於所有視圖)的標籤的

<head> 
    <base href="/"> 
    ... 
</head> 

Angular official doc


您也可以修復它這樣

import {APP_BASE_HREF} from '@angular/common'; 

@NgModule({ 
    ... 
    imports: [RouterModule], 
    providers: [{provide: APP_BASE_HREF, useValue : '/' }] 
]);