// app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { StockComponent } from './stock/stock.component';
import { Code404Component } from './code404/code404.component';
import { BuyerListComponent } from './buyer-list/buyer-list.component';
import { SellerListComponent } from './seller-list/seller-list.component';
import { ConsultComponent } from './consult/consult.component';
import { PermissionGuard } from './guard/permission.guard';
import { FocusGuard } from './guard/focus.guard';
import { StockResolve } from './guard/stock.resolve';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
StockComponent,
Code404Component,
BuyerListComponent,
SellerListComponent,
ConsultComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [PermissionGuard, FocusGuard, StockResolve],
bootstrap: [AppComponent]
})
export class AppModule { }// app-touting.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { StockComponent } from './stock/stock.component';
import { Code404Component } from './code404/code404.component';
import { BuyerListComponent } from './buyer-list/buyer-list.component';
import { SellerListComponent } from './seller-list/seller-list.component';
import { ConsultComponent } from './consult/consult.component';
import { PermissionGuard } from './guard/permission.guard';
import { FocusGuard } from './guard/focus.guard';
import { StockResolve } from './guard/stock.resolve';
const routes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{ path: 'home', component: HomeComponent },
{ path: 'consult', component: ConsultComponent, outlet: 'aux' },
{
path: 'stock/:id', component: StockComponent, data: [{ isPro: true }],
children: [
{ path: '', component: BuyerListComponent },
{ path: 'buyer', component: BuyerListComponent },
{ path: 'seller/:id', component: SellerListComponent },
],
// canActivate: [PermissionGuard],
// canDeactivate: [FocusGuard]
resolve: {
stock: StockResolve
}
},
{ path: '**', component: Code404Component },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }// stock.resolve.ts
import { Resolve, Router } from '@angular/router';
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router/src/router_state';
import { Observable } from 'rxjs/Observable';
// import { Promise } from 'q';
import { Stock } from '../stock/stock.component';
import { Injectable } from '@angular/core';
@Injectable()
export class StockResolve implements Resolve<Stock> {
constructor(private router: Router) {
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Stock | Observable<Stock> | Promise<Stock> {
const id = route.params['id'];
if (id === 1) {
return new Stock(2, 'IBM');
} else {
this.router.navigate(['/home']);
return undefined;
}
}
}// stock.component.ts
import { Component, OnInit } from '@angular/core';
// import { ActivatedRoute, Params } from '@angular/router';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-stock',
templateUrl: './stock.component.html',
styleUrls: ['./stock.component.css']
})
export class StockComponent implements OnInit {
private stock: Stock;
private isPro: boolean;
private foucs = false;
constructor(private routeInfo: ActivatedRoute) { }
ngOnInit() {
this.routeInfo.data.subscribe((data: { stock: Stock }) => {
this.stock = data.stock;
});
// this.routeInfo.params.subscribe((params: Params) => this.stockId = params['id']);
this.isPro = this.routeInfo.snapshot.data[0]['isPro'];
// this.stockId = this.routeInfo.snapshot.params['id'];
}
isFocus() {
return this.foucs;
}
}
export class Stock {
constructor(public id: number, public name: string) { }
}登录后可查看更多问答,登录/注册
Angular新特性,教你熟练使用 Angular 和 Typescript 开发组件式单页应用
了解课程