我无法使Angular 2路由工作.我正在使用Angular 2和Webpack.在Angular 2 webpack启动器中,我注意到他们有webpack生成他们的html和他们的链接,但我希望我不必webpack我的html文件.
这是我的app.routes.ts ……
import { ModuleWithProviders } from '@angular/core'; import { Routes,RouterModule } from '@angular/router'; import { HomeComponent } from "./home/home.component"; import { ScheduleComponent } from "./schedule/schedule.component"; import { PageNotFoundComponent } from "./PageNotFoundComponent"; const appRoutes: Routes = [ { path: '',component: HomeComponent },{ path: 'schedule',component: ScheduleComponent },{ path: '**',component: PageNotFoundComponent } ]; export const appRoutingProviders: any[] = [ ]; export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
这是我的@NgModule代码……
@NgModule({ imports: [ BrowserModule,HttpModule,FormsModule,routing ],declarations: [ AppComponent,AppBanner,AppLogin,HomeComponent,ScheduleComponent,PageNotFoundComponent ],bootstrap: [ AppComponent ],providers: [ ApplicationState,appRoutingProviders ] }) export class AppModule { }
这是计划组件……
import { Component } from '@angular/core'; @Component({ template: ` <div>Schedule</div> ` }) export class ScheduleComponent { }
这是我的HTML,我试图添加我的路线…
<a [routerLink]=" ['/schedule'] ">Schedule</a>
我知道这是很多代码,但这里也是我的webpack构建.如您所见,webpack任务不会触及我的HTML页面,因此这个webpack代码可能无关紧要……
module.exports = { entry: { 'polyfills': __dirname + '/src/polyfills.ts','vendor': __dirname + '/src/vendor.ts','app': __dirname + '/src/main.ts' },output: { filename: '[name].bundle.js',path: __dirname + '/src/bundle/',publicPath: '/',sourceMapFilename: __dirname + '/src/bundle/[name].bundle.map.js' },resolve: { extensions: ['','.ts','.js'],alias: { 'rxjs': 'rxjs-es' } },module: { loaders: [ { test: /\.js$/,loader: 'babel-loader',query: { presets: ['es2015'] } },{ test: /\.ts$/,loaders: ['awesome-typescript-loader'] },{ test: /\.css$/,loader: ExtractTextPlugin.extract("style-loader","css-loader") },{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,loader: "file?name=/fonts/[name].[ext]" },{ test: /\.(woff|woff2)$/,loader:"url?prefix=font/&limit=5000&name=/fonts/[name].[ext]" },{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,loader: "url?limit=10000&mimetype=application/octet-stream&name=/fonts/[name].[ext]" },{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,loader: "url?limit=10000&mimetype=image/svg+xml&name=/fonts/[name].[ext]" } ] },plugins: [ new ExtractTextPlugin('css/[name].css') ] }
不幸的是,当我点击Schedule链接时,我只是收到一个错误.这是来自区域的详细错误信息……
Unhandled Promise rejection: no elements in sequence ; Zone: angular ; Task: Promise.then ; Value: Error: no elements in sequence(…) EmptyError: no elements in sequence
有小费吗?这里有什么问题?
添加pathMatch:’full’
{ path: '',component: HomeComponent,pathMatch: 'full' },
否则两条路线
{ path: '',
匹配路线/时间表,因为”匹配,但不消耗路线中的任何东西,然后’安排’匹配.