角2中的子路线

沙法亚特·阿拉姆(Shafayat Alam)

这是我的app.component.ts

@RouteConfig([
    {path: '/', name: 'Home', component: HomePageComponent},
    {path: '/users/...', name: 'Users', component: UsersComponent},
    {path: '/posts', name: 'Posts', component: PostsComponent},
    {path: '/*others', redirectTo: ['Home']}
])

@Component({
    selector: 'my-app',
    templateUrl: 'app/app.template.html',
    styleUrls: ['app/app.style.css'],
    directives: [ROUTER_DIRECTIVES, PostsComponent, UsersComponent, HomePageComponent, AddUserComponent]
})
export class AppComponent {
    constructor(private router:Router) {
    }

    public isRouteActive(route) {
        return this.router.isRouteActive(this.router.generate(route))
    }
}

这里是users.component.ts

@RouteConfig([
    {path: '/new', name: 'AddUser', component: AddUserComponent},
    {path: '/', name: 'FakePage', component: FakeComponent, useAsDefault: true},
])
@Component({
    selector: 'users',
    templateUrl: 'app/users.template.html',
    providers: [HTTP_PROVIDERS, ROUTER_PROVIDERS],
    directives: [ROUTER_DIRECTIVES],
    styles: [`.glyphicon-remove{color: #b20000;} a{text-decoration: none!important;}.btn-add-user{background: #2c3e52;color: white;margin-bottom: 10px}`]
})

export class UsersComponent {
    private _users:User;

    constructor(private _http:Http) {
        var headers = new Headers({"Access-Control-Allow-Methods": "GET,POST"});
        var options = new RequestOptions({
            headers: headers
        });

        var users = this._http.get('http://jsonplaceholder.typicode.com/users', options)
            .map(res => res.json()).subscribe(data=> {
                this._users = data
            });
    }
}

而且users.template.html是这样的:

<h1>Users</h1>

<a class="btn btn-add-user" [routerLink]="['AddUser']">Add User</a>
<table class="table table-bordered">
    <thead>
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Edit</th>
        <th>Delete</th>
    </tr>
    </thead>
    <tbody>
    <tr *ngFor="let user of _users">
        <td>{{user.name}}</td>
        <td>{{user.email}}</td>
        <td><a href="#" class="glyphicon glyphicon-edit"></a></td>
        <td><a href="#" class="glyphicon glyphicon-remove"></a></td>
    </tr>
    </tbody>
</table>

现在,当我访问Users页面chrome控制台时会引发错误:

错误:组件“ AppComponent”没有名为“ AddUser”的路由。在RouteRegistry.exports.RouteRegistry.RouteRegistry.generate(不推荐使用路由器)上的新BaseException(router-deprecated.umd.js:648)上通过RouteRegistry.exports.RouteRegistry.RouteRegistry._generate(router-deprecated.umd.js:2389) umd.js:2327)位于RootRouter.exports.Router.Router.generate(router-deprecated.umd.js:2984)位于RouterLink.exports.RouterLink.RouterLink._updateLink(router-deprecated.umd.js:3359)位于RouterLink .set [作为routeParams](router-preprecated.umd.js:3371)在DebugAppView._View_UsersComponent0.detectChangesInternal(UsersComponent.template.js:146)在DebugAppView.AppView.detectChanges(core.umd.js:9996)在DebugAppView中。 DebugAppView.AppView.detectViewChildrenChanges(core.umd.js:10016)的detectChanges(core.umd.js:10084)

而且Add User按钮不起作用。

贡特·佐赫鲍尔(GünterZöchbauer)

不要提供ROUTER_PROVIDERS所有组件。它们只能在根组件中或在以下位置中提供一次bootstrap()

去掉

ROUTER_PROVIDERS

providers: []您的UserComponent并将其添加到AppComponent

暗示

  • CORS标头

    var headers = new Headers({"Access-Control-Allow-Methods": "GET,POST"});
    

必须由服务器添加以允许CORS请求。在客户端上添加它们无效。

另请参见Access-Control-Allow-Origin不允许使用Origin

  • 提供者

无需directives: [...]添加由路由器添加的组件仅列出直接在模板中使用的指令(除非它们已经由PLATFORM_DIRECTIVESlike提供ngFor

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Durandal子路线中的Route Not Found错误

来自分类Dev

如何在Ember中获取子路线的routeparameter

来自分类Dev

从子路线替换父视图

来自分类Dev

路线及其子路线中如何具有两种不同的模型?

来自分类Dev

ZF2子路线无效

来自分类Dev

如何在Angular 2中使用子路线

来自分类Dev

Aurelia:如何在子路线之间导航

来自分类Dev

Angular 2子路线冻结应用

来自分类Dev

定义但未识别的Angular2 RC1子路线

来自分类Dev

Angular2中的子路由

来自分类Dev

Angular 2子路线

来自分类Dev

Angular2模块无法匹配组件子路线

来自分类Dev

使用NgRx在子路线中可以加载

来自分类Dev

如何使子路线在角度嵌套的路线中占据整页

来自分类Dev

如何在角/离子路径中写条件

来自分类Dev

我可以在Angular2中执行此操作吗(子路线中的子路线)

来自分类Dev

在Zend Framework 2中获取子路由

来自分类Dev

如何在Ember中获取子路线的routeparameter

来自分类Dev

路线及其子路线中如何具有两种不同的模型?

来自分类Dev

为什么我的ZF2段子路线被忽略?

来自分类Dev

Django:国际子路线

来自分类Dev

Angular2子路线停止页面加载

来自分类Dev

Angular2:子路线

来自分类Dev

将数据共享给子路线

来自分类Dev

在Angular 2中声明子路线的适当方法

来自分类Dev

角度2中的子路由

来自分类Dev

子路线之间的导航

来自分类Dev

Angular 2 中的空子路由

来自分类Dev

Angular - 子路线的路线参数