前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Angular4记账webApp练手项目之三(在angular4项目中使用路由router)

Angular4记账webApp练手项目之三(在angular4项目中使用路由router)

作者头像
易兒善
发布2018-08-21 15:22:02
1.4K0
发布2018-08-21 15:22:02
举报
文章被收录于专栏:挖坑填坑

前台源码

前言

1、本项目是基于之前文章续写的。

用到了哪些

1、路由,子路由的使用,引入——定义Routes——router-outlet——routerLink——routerLinkActive 2、(click)指令,绑定事件 3、[ngClass]指令,绑定样式

安装

代码语言:javascript
复制
npm i --save @angular/router

官方网址:https://angular.io/guide/router

引入和使用

要使用路由,我们需要在 app.module.ts 模块中,导入 RouterModule 。具体如下:

代码语言:javascript
复制
import { RouterModule } from '@angular/router';
代码语言:javascript
复制
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule, 
    WeUIModule
  ],

这样还不行,还要定义和添加路由,修改如下:

代码语言:javascript
复制
import { Routes, RouterModule } from '@angular/router';
代码语言:javascript
复制
export const ROUTES: Routes = [
    { path: '#', component: AccountingComponent },
    { path: 'count', component: CountComponent }
  ];
代码语言:javascript
复制
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    WeUIModule,
    RouterModule.forRoot(ROUTES)
  ],

这样就定义好路由了,还需要在页面上指定路由的区域。修改菜单menu.component.html如下: routerLink 是路由地址,routerLinkActive的作用是,当 a 元素对应的路由处于激活状态时,weui-bar__item_on类将会自动添加到 a 元素上。

代码语言:javascript
复制
<weui-tabbar>
  <a routerLink="#" routerLinkActive="weui-bar__item_on" class="weui-tabbar__item">
    <span class="weui-tabbar__icon">
      <i class="fa fa-edit"></i>
    </span>
    <p class="weui-tabbar__label">记账</p>
  </a>
  <a routerLink="/count" routerLinkActive="weui-bar__item_on" class="weui-tabbar__item">
    <span class="weui-tabbar__icon">
      <i class="fa fa-bar-chart"></i>
    </span>
    <p class="weui-tabbar__label">统计</p>
  </a>
</weui-tabbar>

app.component.html 修改如下: router-outlet为路由内容呈现的容器。

代码语言:javascript
复制
<router-outlet></router-outlet>

<app-menu></app-menu>

可以看出存在问题,进入时没有默认页面,必须点击后才会到对应页面,可以将路由中#改为空,可以实现默认进入记账页面,但是routerLinkActive就失去效果了,记账按钮就会一直亮着。不够后面我们用动态绑定class的方法来代替routerLinkActive。

这里写图片描述

二级路由(子路由使用)

我们当初设计统计有两个页面,按年统计,和按月统计。现在来完成这个。 加入子路由

代码语言:javascript
复制
export const ROUTES: Routes = [
    { path: '#', component: AccountingComponent },
    { path: 'count', component: CountComponent, children: [
      { path: '', component: CountMonthComponent },
      { path: 'year', component: CountYearComponent }
    ] }
  ];

添加count.component.html

代码语言:javascript
复制
<div class="weui-panel__hd">
  <span>当前记账金额为:</span>
  <em>123456</em>
</div>
<weui-navbar style="position: relative">
  <a routerLink="/count" class="weui-navbar__item">
    <h4>月</h4>
  </a>
  <a routerLink="/count/year" class="weui-navbar__item" >
    <h4>年</h4>
  </a>
</weui-navbar>
<div>
  <router-outlet></router-outlet>
</div>

这里我们没有用到routerLinkActive,现在我们用动态样式来实现

这里写图片描述

count.component.ts里面我们添加一个标记

代码语言:javascript
复制
export class CountComponent implements OnInit {
  activeIndex = 0; // 当前激活标记
  constructor() { }

  ngOnInit() {
  }
  setActive(i) { // 设置标记
    this.activeIndex = i;
  }
}

count.component.html 修改

代码语言:javascript
复制
<weui-navbar style="position: relative">
  <a routerLink="/count" (click)="setActive(1)" class="weui-navbar__item" [ngClass]="{'weui-bar__item_on':activeIndex == 1}">
    <h4>月</h4>
  </a>
  <a routerLink="/count/year" (click)="setActive(2)" class="weui-navbar__item" [ngClass]="{'weui-bar__item_on':activeIndex == 2}">
    <h4>年</h4>
  </a>
</weui-navbar>

修改下count.component.css里的样式

代码语言:javascript
复制
.weui-panel__hd{
  padding:18px;
  text-align: center;
}
.weui-panel__hd span{
  font-size: 14px;
}
.weui-panel__hd em{
  font-size: 20px;
  color:  #09bb07;
  display: inherit;
  letter-spacing: 1px;
}

这里写图片描述

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.10.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装
  • 引入和使用
  • 二级路由(子路由使用)
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档