Angular2 (RC4) -- 路由与导航

作者: Yeaseon | 来源:发表于2016-08-25 11:19 被阅读235次

    基础知识

    1.<base href>

    大多数带路由的应用都要在 index.html 的 <head>标签下添加一个 <base>元素。

    2.导入路由库

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

    3.配置

    首选方案是用带“路由数组”的provideRouter工厂函数([provideRouter(routes)])来启动此应用。

    app.routes.ts

    import { provideRouter, RouterConfig } from '@angular/router';
    
    const routes: RouterConfig = [
      { path: 'crisis-center', component: CrisisCenterComponent },
      { path: 'heroes', component: HeroListComponent },
      { path: 'hero/:id', component: HeroDetailComponent },
      { path: '**', component: PageNotFoundComponent }
    ];
    
    export const appRouterProviders = [
      provideRouter(routes)
    ];
    

    RouterConfig是一个路由数组,它决定如何导航。每个Route会把一个 URL 的 path映射到一个组件。

    path不能使用斜杠/开头。路由器会为我们解析和生成URL。

    第三个路由中的id是一个路由参数的 token。

    第四个路由中的**代表路由是一个通配符路径。如果当前无法匹配上我们配置过的任何一个路径,路由器就会匹配上这一个,类似于 switch中的default。当需要显示 404 页面,该特性非常有用。

    我们将配置好的routes数组传给provideRouter()函数,这个函数返回一个经过配置的 Router服务提供商

    最后通过 appRouterProviders数组导出这个提供商,以便在main.ts中简单的注册路由器依赖。

    main.ts中的bootstrap函数中注册路由器的提供商。

    main.ts

    // main entry point
    import { bootstrap }          from '@angular/platform-browser-dynamic';
    import { AppComponent }       from './app.component';
    import { appRouterProviders } from './app.routes';
    
    bootstrap(AppComponent, [
      appRouterProviders
    ])
    .catch(err => console.error(err));
    

    4.<router-outlet>

    上面的配置完成后,当 URL 变为 /heroes时,路由器就会匹配到pathheroesRoute,并且在宿主视图中的<router-outlet>中显示HeroListComponent组件。

    5.[routerLink]

    我们在<a>标签中添加了routerLink指令,可以一次性绑定到我们路由中的path值。

    如果routerLink想要绑定动态信息,我们就可以把它绑定到一个能够返回路由链接数组的模板表达式上。路由器最终会把此数组解析成一个 URL 和一个组件视图。

    我们还可以往<a>中添加一个routerLinkActive指令,用于在相关的routerLink被激活时所在元素添加或移除CSS类。该指令可以直接添加到该元素上,也可以直接添加到其父元素上。

    AppComponent模板

    template: `
      <h1>Component Router</h1>
      <nav>
        <a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
        <a routerLink="/heroes" routerLinkActive="active">Heroes</a>
      </nav>
      <router-outlet></router-outlet>
    `,
    
    

    6.路由器状态

    在每个导航的生命周期完成时,路由器会构建出一个 ActivatedRoute组成的树,它表示路由器的当前状态。我们可以在应用中任何使用 Router服务及其 routerState属性来访问当前的RouterState值。

    7.ROUTER_DIRECTIVES

    RouterLinkRouterLinkActiveRouterOutletROUTER_DIRECTIVES集合中的指令,所以需要在@Component元数据中加入到directives数组中。

    directives: [ROUTER_DIRECTIVES]
    

    喜欢这篇文章请点赞或收藏,如果想看到我的更多的文章,请关注我!!!

    相关文章

      网友评论

        本文标题:Angular2 (RC4) -- 路由与导航

        本文链接:https://www.haomeiwen.com/subject/uitasttx.html