【问题标题】:Angular JS 2 route with sails js带有sails js的Angular JS 2路线
【发布时间】:2016-02-24 10:32:48
【问题描述】:

我正在尝试在前面设置一个带有 Angularjs 2 的sails js 应用程序。 我想用angularJS系统路由和nosails js系统。

如何禁用风帆路线并让角度控制它们? 这是我的 app.component.ts,我在其中声明路由 /account

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 并且不重新加载页面。

谢谢。

【问题讨论】:

    标签: sails.js angular


    【解决方案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}
    ]);
    

    在这种情况下,当您刷新页面或直接访问该页面时,它会再次显示(但您的地址中会有一个#)。

    此链接也可以帮助您:

    希望对你有帮助 蒂埃里

    【讨论】:

      【解决方案2】:

      我必须为 config/routes.js 中的所有路由返回“/”,并让 angular 显示其他视图。

      【讨论】:

      • 我遇到了类似的情况,我设法将 SailsJS 的 Angular 12 应用程序作为静态资源提供服务,方法是使用 GET 覆盖所有前端路由到应用程序包。谢谢你的提示。
      猜你喜欢
      • 2016-06-03
      • 2016-05-09
      • 2017-07-26
      • 1970-01-01
      • 2016-07-30
      • 2017-01-30
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      相关资源
      最近更新 更多