Угловой маршрут «данные» пуст в ActivatedRoute.snapshot, когда AoT включен - PullRequest
1 голос
/ 16 апреля 2019

В моем приложении Angular 7 есть несколько маршрутов, которые имеют свойство data, используемое для различных целей - получено из activatedRoute.snapshot.data. У меня проблема в том, что в разработке все работает как положено (JIT-компилятор), но как только я перехожу в производство с опережением времени, data становится пустым объектом.

Минимум для воспроизведения: добавьте свойство data к маршруту, например,

in 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, но здесь мне интересно, сталкивался ли кто-то еще и решал ли ту же проблему раньше?

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Кажется, что эта проблема: https://github.com/angular/angular-cli/issues/5754

Быстрое решение:

// app.component.ts
constructor(private router: Router) {
  // reset routes
  router.resetConfig(routes);
}
0 голосов
/ 17 апреля 2019

маршруты должны быть экспортированы для работы с 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 "экспорт" ɵ0 "(импортированный как" i65 ") не найден в" ./modules/pip/pip.module'

...