我试图在前面设置一个带Angularjs 2的sails js应用程序。 我想使用angularJS系统路由,没有sails js系统。
如何禁用风帆路线并让角度控制它们? 这是我的app.component.ts,其中我声明了路线/帐户
import {View, Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
import {AccountComponent} from './account.component';
@Component({
selector: 'my-app',
template: `<router-outlet></router-outlet>`,
directives: [ROUTER_DIRECTIVES]
})
@RouteConfig ([
{path: '/account', name: 'Account', component: AccountComponent}
])
export class AppComponent {
}
如果我删除config / routes.js中的路由,这不起作用。 我尝试在config.blueprint.js中禁用一些选项,但没什么好处。
我想使用Angular路线来获得SPA并且不会重新加载页面。
感谢。
答案 0 :(得分:1)
事实上,在没有服务器配置的情况下尝试直接访问路由时出错是很正常的。实际上,当使用路由时,Angular2更新(并且没有#/ hashbang方法)路由的实际地址,而不与服务器进行任何交互。该路径不存在于服务器上。如果您加载HTML入口点文件,一切都会正常工作。唯一的问题是当您尝试直接从其路径访问路线时...
默认情况下,Angular2使用HTML5历史记录。如果您不想遇到此问题,则需要更新服务器以便为您定义的每个路径路径提供index.html
文件。
如果要切换到HashBang方法,则需要使用此配置:
import {bootstrap} from 'angular2/platform/browser';
import {provide} from 'angular2/core';
import {ROUTER_PROVIDERS} from 'angular2/router';
import {LocationStrategy, Location, HashLocationStrategy } from 'angular2/router';
import {MyApp} from './myapp';
bootstrap(MyApp, [
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy}
]);
在这种情况下,当您刷新页面或直接访问该页面时,它会再次显示(但您的地址中会有#
。)
此链接也可以为您提供帮助:
希望它可以帮到你, 亨利
答案 1 :(得分:0)
我必须为config / routes.js中的所有路由返回“/”,并让angular显示其他路径。