Angular 路由 'data' 在 ActivatedRoute.snapshot 中为空,当启用 AoT 时
Angular route 'data' is empty in ActivatedRoute.snapshot when AoT is enabled
我的 Angular 7 应用程序中有几条路线有 data
属性,用于不同的目的 - 从 activatedRoute.snapshot.data
检索。我遇到的问题是在开发(JIT 编译器)中一切都按预期工作,但是一旦我使用 Ahead-of-time 进入生产,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 本身的问题,但我想知道以前是否有人遇到过并解决过同样的问题?
好像是这个问题:https://github.com/angular/angular-cli/issues/5754
快速解决方案:
// app.component.ts
constructor(private router: Router) {
// reset routes
router.resetConfig(routes);
}
需要导出路由才能使用 AoT
启用
export const routes: Routes = [
{
path: 'foo',
component: fooComponent,
data: {
bar: 'bar'
}
}
];
当 运行 问题中的代码时,出现的警告并未准确描述问题所在,但这条信息连同@user1254498 的回答中链接的问题(https://github.com/angular/angular-cli/issues/5754) 我找到了解决方法。
WARNING in ./src/app/app.module.ngfactory.js 112:9550-9556
"export 'ɵ0' (imported as 'i65') was not found in './modules/pip/pip.module'
我的 Angular 7 应用程序中有几条路线有 data
属性,用于不同的目的 - 从 activatedRoute.snapshot.data
检索。我遇到的问题是在开发(JIT 编译器)中一切都按预期工作,但是一旦我使用 Ahead-of-time 进入生产,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 本身的问题,但我想知道以前是否有人遇到过并解决过同样的问题?
好像是这个问题:https://github.com/angular/angular-cli/issues/5754
快速解决方案:
// app.component.ts
constructor(private router: Router) {
// reset routes
router.resetConfig(routes);
}
需要导出路由才能使用 AoT
启用
export const routes: Routes = [
{
path: 'foo',
component: fooComponent,
data: {
bar: 'bar'
}
}
];
当 运行 问题中的代码时,出现的警告并未准确描述问题所在,但这条信息连同@user1254498 的回答中链接的问题(https://github.com/angular/angular-cli/issues/5754) 我找到了解决方法。
WARNING in ./src/app/app.module.ngfactory.js 112:9550-9556 "export 'ɵ0' (imported as 'i65') was not found in './modules/pip/pip.module'