路由(Routing)
路由有助于根据用户在主页面上选择的选项将用户引导至不同的页面。 因此,根据他们选择的选项,将向用户呈现所需的角度组件。
让我们看看必要的步骤,看看我们如何在Angular 2应用程序中实现路由。
Step 1 - 在index.html文件中添加基准引用标记。
<!DOCTYPE html>
<html>
<head>
<base href = "/">
<title>Angular QuickStart</title>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1">
<base href = "/">
<link rel = "stylesheet" href = "styles.css">
<!-- Polyfill(s) for older browsers -->
<script src = "node_modules/core-js/client/shim.min.js"></script>
<script src = "node_modules/zone.js/dist/zone.js"></script>
<script src = "node_modules/systemjs/dist/system.src.js"></script>
<script src = "systemjs.config.js"></script>
<script>
System.import('main.js').catch(function(err){ console.error(err); });
</script>
</head>
<body>
<my-app></my-app>
</body>
</html>
Step 2 - 为应用程序创建两个路由。 为此,创建名为Inventory.component.ts和product.component.ts 2个文件
Step 3 - 将以下代码放在product.component.ts文件中。
import { Component } from '@angular/core';
@Component ({
selector: 'my-app',
template: 'Products',
})
export class Appproduct {
}
Step 4 - 将以下代码放在Inventory.component.ts文件中。
import { Component } from '@angular/core';
@Component ({
selector: 'my-app',
template: 'Inventory',
})
export class AppInventory {
}
这两个组件都没有做任何花哨的事情,它们只是根据组件呈现关键字。 因此,对于Inventory组件,它将向用户显示Inventory关键字。 对于产品组件,它会向用户显示product关键字。
Step 5 - 在app.module.ts文件中,添加以下代码 -
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { Appproduct } from './product.component';
import { AppInventory } from './Inventory.component';
import { RouterModule, Routes } from '@angular/router';
const appRoutes: Routes = [
{ path: 'Product', component: Appproduct },
{ path: 'Inventory', component: AppInventory },
];
@NgModule ({
imports: [ BrowserModule,
RouterModule.forRoot(appRoutes)],
declarations: [ AppComponent,Appproduct,AppInventory],
bootstrap: [ AppComponent ]
})
export class AppModule { }
关于上述计划需要注意以下几点 -
appRoutes包含2个路由,一个是Appproduct组件,另一个是AppInventory组件。
确保声明两个组件。
RouterModule.forRoot确保将路由添加到应用程序。
Step 6 - 在app.component.ts文件中,添加以下代码。
import { Component } from '@angular/core';
@Component ({
selector: 'my-app',
template: `
<ul>
<li><a [routerLink] = "['/Product']">Product</a></li>
<li><a [routerLink] = "['/Inventory']">Inventory</a></li>
</ul>
<router-outlet></router-outlet>`
})
export class AppComponent { }
关于上述计划,需要注意以下几点 -
router-outlet>是占位符,用于根据用户选择的选项呈现组件。
现在,保存所有代码并使用npm运行应用程序。 转到浏览器,您将看到以下输出。
现在,如果单击“库存”链接,您将获得以下输出。
添加错误路由
在路由中,还可以添加错误路由。 如果用户转到应用程序中不存在的页面,则会发生这种情况。
让我们看看我们如何实现这一目标。
Step 1 - 将PageNotFound组件添加为NotFound.component.ts,如下所示 -
Step 2 - 将以下代码添加到新文件中。
import { Component } from '@angular/core';
@Component ({
selector: 'my-app',
template: 'Not Found',
})
export class PageNotFoundComponent {
}
Step 3 - 将以下代码添加到app.module.ts文件中。
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { Appproduct } from './product.component'
import { AppInventory } from './Inventory.component'
import { PageNotFoundComponent } from './NotFound.component'
import { RouterModule, Routes } from '@angular/router';
const appRoutes: Routes = [
{ path: 'Product', component: Appproduct },
{ path: 'Inventory', component: AppInventory },
{ path: '**', component: PageNotFoundComponent }
];
@NgModule ({
imports: [ BrowserModule,
RouterModule.forRoot(appRoutes)],
declarations: [ AppComponent,Appproduct,AppInventory,PageNotFoundComponent],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
关于上述计划,需要注意以下几点 -
现在我们有一个名为path的额外路由:'**',component:PageNotFoundComponent。 因此,**适用于任何不符合默认路线的路线。 它们将被定向到PageNotFoundComponent组件。
现在,保存所有代码并使用npm运行应用程序。 转到您的浏览器,您将看到以下输出。 现在,当您转到任何错误的链接时,您将获得以下输出。