我想知道你们是否可以帮助编写此代码!因为我想我会不省人事
这是\helpers\matcher.ts(4,12)
:
import { UrlMatcher , UrlSegment } from "@angular/router";
export function match(path: string): UrlMatcher {
return function matcher(url: UrlSegment[], group) {
console.log(path, url, group);
if (url.length > 0 && url[0].path === path) {
return { consumed: [url[0]] };
}
return null;
};
}
这是我在构建--prod时遇到的错误
src \ app \ app.module.ts(124,30)中的错误:模板编译“ AppModule”时发生错误
'rootRouterConfig'中的装饰器不支持函数表达式
“ rootRouterConfig”引用“匹配”
'match'包含src \ app \ shared \ helpers \ matcher.ts(4,12)中的错误
考虑将函数表达式更改为导出的函数
但是它可以编译并与ng build和ng serve完美配合。
这是app.routes路径
export const rootRouterConfig: Routes = [
{ path: ':param', component: HomeComponent,
children: [
{ matcher: match('job-spec/:id'), component: JobSpecDetailsComponent },
{ path: '**', redirectTo: '404' },
]
},
];
这是app.module
@NgModule({
imports: [
....
RouterModule.forRoot(rootRouterConfig, {
useHash: false,
scrollPositionRestoration: 'enabled',
anchorScrolling: 'enabled',
}),
....
答案 0 :(得分:1)
我无法测试,但请尝试以下操作:
export function match(url: UrlSegment[]): UrlMatcher {
if (url.length > 0 && url[0].path === path) {
return { consumed: [url[0]] };
}
return null;
}
并将其用作:
{ matcher: match, component: JobSpecDetailsComponent },
URL
有路径,但是不确定您为什么要再次传递路径。静态使用路径,查看其是否可以编译,然后找出路径。