angular router常用配置

Angular’s Route


const routes: Routes = [
  {
    // 来源管理 一览
    path: 'sourceList',
    component: SourceListComponent
  },
  {
    // 推广二维码 一览
    path: 'qrcodeList',
    component: QrcodeListComponent,
  },
  {
    // 推广二维码 新建/编辑
    path: 'qrcodeEdit',
    component: QrcodeEditComponent,
  },
  {
    // 推广二维码 详情
    path: 'qrcodeDetail',
    component: QrcodeDetailComponent,
  },
  {
    // 默认路由 -> 推广二维码 一览
    path: '',
    redirectTo: 'qrcodeList',
    pathMatch: 'full'
  },
];
禁止浏览器history
https://angular.io/api/router/RouterLink

<a routerLink='/sharing'  skipLocationChange="false">
https://angular.io/api/router/NavigationExtras

// Navigate silently to /view
this.router.navigate(['/view'], { skipLocationChange: true });
路由守护
TODO

路由传值
html里的路由跳转
<!-- 如果没有参数要传的话,不需要加queryParams -->
<a nz-button nzType="default" routerLink="/qrcodeEdit" [queryParams]="{'id': item.id}">编辑</a>
组件里的路由跳转
// this.router是@angular/router模块里的Router
this.router.navigate(["/qrcodeEdit"], { id: qrcodeId });
路由参数获取
使用Angular路由模块中的ActivatedRoute

/**
 * 在ngOnInit里去获取路由中的参数
 */
public ngOnInit() {
  // ActivatedRoute是@angular/router模块里的
  this.activeRoute.queryParams.subscribe(params => {
    if (params.id && params.id !== "") {
      this.id = params.id;
    }
  });
}
TODO:还有一种是snapshot的方式获取,补充使用示例,以及两种方式的区别

通过路由设置每个页面标题
在app-routing.module.ts里添加data: { title: 'xxx' }

// app-routing.module.ts
const routes: Routes = [
  {
    path: 'fissionList',
    component: FissionListComponent,
    data: { title: '模板活动' }
  },

  {
    path: '',
    redirectTo: '/fissionList',
    pathMatch: 'full'
  },
  {
    path: 'fissionEdit',
    component: FissionEditComponent,
    data: { title: '模板活动' }
  },
  {
    path: 'fissionView',
    component: FissionViewComponent,
    data: { title: '模板活动详情' }
  }
];
列表页:

// fission-list.ts
import { ActivatedRoute } from '@angular/router';
import { Title } from '@angular/platform-browser';

constructor(
  private activeRoute: ActivatedRoute,
  private title: Title
) {}

public ngOnInit() {
  this.title.setTitle(this.activeRoute.snapshot.data.title);
}
新建、编辑页:

// fission-edit.ts
import { ActivatedRoute } from '@angular/router';
import { Title } from '@angular/platform-browser';

constructor(
  private activeRoute: ActivatedRoute,
  private title: Title
) {}

public ngOnInit() {
  this.activeRoute.queryParams.subscribe(params => {
    if (params.id && params.id !== "") {
      this.title.setTitle(`编辑${this.activeRoute.snapshot.data.title}`);
    } else {
      this.title.setTitle(`新建${this.activeRoute.snapshot.data.title}`);
    }
  });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值