【发布时间】:2019-07-28 13:41:24
【问题描述】:
import { environment } from '@env/environment';
export const routes: Routes = [
{
path: '',
children: [
{
path: 'organisations',
component: OrganisationListComponent,
data: {
[environment.router.data.resourceName]: 'ORGANISATION' // <- error
}
},
{
path: 'organisations/create',
component: OrganisationCreateComponent,
data: {
[environment.router.data.resourceName]: 'ORGANISATION_LIST' // <- error
},...
}
这是我的一个路由模块文件的一部分。如您所见,我希望路由数据具有我在环境文件中定义的名称的属性。但这在使用 --aot 标志编译时不起作用。这是错误:
ERROR in Error during template compile of 'AdminRoutingModule'
Expression form not supported in 'routes'
'routes' contains the error at app/admin/admin-routing.module.ts(30,11).
我的应用程序中有大约 30 条路由,它们都具有键为“resourceName”的数据属性。而且我不想在我的应用程序中重复这个字符串 30 次。
我无法创建具有 resourceName 属性的类并在数据中实例化它,因为在路由配置中也不允许使用函数表达式。
有没有办法解决这个问题,或者使用 AOT 编译器根本无法实现?
编辑:这是 environement.ts 文件:
export const environment = {
production: true,
version: '1.0.0',
router: {
data: {
resourceName: 'resourceName'
}
}
}
【问题讨论】:
-
它只是一个枚举。用
'ORGANISATION'替换ResourceName.ORGANISATION并没有什么不同 -
哦,确实,对不起,我看错了问题(我会删除我的评论)。
-
如果您将“数据”对象移到路由之外会怎样。像这样的东西: const dat = {}; dat[environment.router.data.resourceName] = 'ORGANISATION';然后在这样的路由中使用它: data: dat
-
还是一样的错误:(
标签: javascript angular typescript angular-aot