在Angular 2中,我只想为IE9使用散列策略。为此我只有在检测到IE9浏览器时才将路由器配置为使用散列策略。Angular 2 AOT“不支持表达式”的错误
这与TSC编译时工作:
const useHash: boolean = (typeof window.history.pushState) !== 'function';
@NgModule({
declarations: [AppComponent],
imports: [
RouterModule.forRoot(appRoutes, {initialNavigation : false, useHash : useHash})
]
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
然而,NGC编译器(AOT编译)不接受它。 ngc(在const声明行上)引发以下错误。
遇到的错误静态地解析符号值。不支持
我也试图表达形式(基于这篇文章:https://medium.com/@isaacplmann/making-your-angular-2-library-statically-analyzable-for-aot-e1c6f3ebedd5#.h4pnszi13):
@NgModule({
declarations: [AppComponent],
imports: [
RouterModule.forRoot(appRoutes, {initialNavigation : false, useHash : AppModule.useHash})
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
static useHash: boolean = (typeof window.history.pushState) !== 'function';
}
,但我得到了同样的错误(在供应商这行时间)。请注意,它的工作如果我static useHash: boolean = false;
。
如何解决模块声明的问题?
谢谢你的建议,但没有它不起作用。我得到'类型的参数{initialNavigation:false; useHash:()=> boolean; }'不能分配给'ExtraOptions'类型的参数。 属性'useHash'的类型不兼容。如果我尝试使用'useHash:useHash()',我得到原始错误。 – j3r6me