最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Angular4 路由設(shè)置相關(guān)

 更新時(shí)間:2017年08月26日 09:44:42   作者:壹頁(yè)書(shū)  
本篇文章主要介紹了詳解Angular4 路由設(shè)置相關(guān),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1.路由相關(guān)配置

路由類設(shè)置

/*路由基本模型*/

/*導(dǎo)入RouterModule,Routes類型*/
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from "./login/login.component";

/*定義路由const表示不可改變*/
const routers: Routes = [
 /*
  path:字符串,表示默認(rèn)登入,
  path為路徑 /login component:組件
  component:組件
  pathMatch:為字符串默認(rèn)為前綴匹配 "prefix"; "full" 為完全匹配。
  redirectTo:指向?yàn)槁窂剑萷ath
  outlet:字符串,路由目標(biāo),面對(duì)多個(gè)路由的情況
  children:Routes 子路由相關(guān)
  */
 { path: '', component: LoginComponent },
 // path:路徑 /detail/1 :id代表參數(shù)相關(guān)
 { path: 'detail/:id', component: LoginComponent },
 // 懶加載子模塊, 子模塊需要配置路由設(shè)置啟動(dòng)子組件,如果這樣設(shè)置了路由,需要在子模塊中再定義路由
 { path: 'other', loadChildren:"./demo/demo.module#demoModule" },
 // 重定向,路徑為** 表示不能識(shí)別的路徑信息,重定向到相關(guān)路徑下
 { path: '**', pathMatch: 'full', redirectTo: '' }
];

/*將路由設(shè)置導(dǎo)出,子模塊中的路由使用 forChild 而不是 forRoot*/
export const appRouter = RouterModule.forRoot(routers);

ngModule設(shè)置

@NgModule({
 declarations: [
 ......
 ],
 imports: [
 ......
  appRouter
 ]
})

組件模板設(shè)置

<router-outlet></router-outlet>

2.多路由處理

{ path: 'news', outlet: 'let1', component: NewsComponent },
{ path: 'news', outlet: 'let2', component: News2Cmponent },
//模板中
<router-outlet name="let1"></router-outlet>
<router-outlet name="let2"></router-outlet>

訪問(wèn) /news/ 時(shí)同時(shí)加載 NewsComponent News2Cmponent 兩個(gè)組件

3.路有鏈接以及組件中調(diào)用路由方法使用

<a routerLink="/detail/1" routerLinkActive="active">detail</a>
<a [routerLink]="['/detail', news.id]">{{news.title}}</a>
<a [routerLink]="[{ outlets: { let2: ['news'] } }]">Contact</a>

routerLinkActive="active" 即在本路由激活時(shí)添加樣式 .active

或者:

this.router.navigate(['/detail', this.news.id])
this.router.navigate([{ outlets: { let2: null }}]);

其中:navigateByUrl 方法指向完整的絕對(duì)路徑

4.路由守衛(wèi)(適用于后臺(tái)管理等需要登錄才能使用的模塊)

import { Injectable }   from '@angular/core';
import { CanActivate }  from '@angular/router';

@Injectable()
export class AuthService implements CanActivate {
 canActivate() {
  // 這里判斷登錄狀態(tài), 返回 true 或 false
  return true;
 }
}

在路由配置中的設(shè)置

{ path: '', component: LoginComponent, canActivate:[LoginComponent] },

5.退出守衛(wèi)(適合于編輯器修改后的保存提示等場(chǎng)景)

import { Injectable }   from '@angular/core';
import { CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot }  from '@angular/router';

// CanDeactivateComponent 是定義的接口,見(jiàn)下段代碼
import { CanDeactivateComponent } from './can-deactivate.omponent';

@Injectable()
export class DeacService implements CanDeactivate<CanDeactivateComponent> {
 canDeactivate(
  canDeactivateComponent: CanDeactivateComponent,
  activatedRouteSnapshot: ActivatedRouteSnapshot,
  routerStateSnapshot: RouterStateSnapshot
 ) {
  // 目標(biāo)路由和當(dāng)前路由
  console.log(activatedRouteSnapshot);
  console.log(routerStateSnapshot);

  // 判斷并返回
  return canDeactivateComponent.canDeactivate ? canDeactivateComponent.canDeactivate() : true

 }
}

..

// 接口組件, 返回 true 或 false 如表單發(fā)生改變則調(diào)用對(duì)話框服務(wù)
export interface CanDeactivateComponent {
 canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
}

路由配置

{
 path: ...,
 canDeactivate: [DeacService],
  component: ...
}

模塊中添加服務(wù)

providers: [
 DeactivateGuardService
]

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

凤城市| 鹿邑县| 玉林市| 奉新县| 翼城县| 上蔡县| 江山市| 浑源县| 石嘴山市| 陵川县| 盱眙县| 正蓝旗| 伊通| 满洲里市| 陵川县| 阿克苏市| 海兴县| 博湖县| 巴东县| 柳林县| 裕民县| 巴彦淖尔市| 呈贡县| 常山县| 广安市| 商丘市| 高碑店市| 合江县| 南投县| 江孜县| 上蔡县| 喀喇| 尉氏县| 英超| 安福县| 苗栗县| 容城县| 永定县| 施甸县| 马龙县| 应用必备|