我的Angular 7应用程序中有一些路由,这些路由具有data
属性,用于不同目的-从activatedRoute.snapshot.data
检索。我遇到的问题是,一切都能在开发(JIT编译器)中按预期方式工作,但是一旦我提前进行生产,data
就是一个空对象。
要复制的最低限度:例如,在路由中添加data
属性,
在app-routing.module.ts
中:
...
const routes: Routes = [
{
path: 'foo',
component: fooComponent,
data: {
bar: 'bar'
}
}
];
...
然后在与路由匹配的组件中console.log()
activatedRoute.snapshot.data
,例如
在foo.component.ts
中:
...
import { ActivatedRoute } from '@angular/router';
...
constructor(
private activatedRoute: ActivatedRoute
) { }
ngOnInit() {
console.log(this.activatedRoute.snapshot.data);
}
使用ng serve
(JIT),您应该在控制台中获得data
。
使用ng serve --aot=true
(提前),data
在控制台中是一个空对象。
除了在生产中禁用AoT之外,我别无他法,由于性能优势,这并不理想。看起来像是AoT本身的问题,但在这里我想知道以前是否有人遇到过并解决过相同的问题?
答案 0 :(得分:1)
答案 1 :(得分:0)
需要导出路由才能启用AoT
export const routes: Routes = [
{
path: 'foo',
component: fooComponent,
data: {
bar: 'bar'
}
}
];
运行问题中的代码时,有一些警告并不能完全描述问题所在,但是该信息与该问题一起链接在@ user1254498的答案(https://github.com/angular/angular-cli/issues/5754)中,我能够找出解决办法。
./ src / app / app.module.ngfactory.js中的警告112:9550-9556 “在'./modules/pip/pip.module'中找不到导出'ɵ0'(导入为'i65')