Подтвердить что ты не робот

В Angular2 RC4 как добавить компоненты в массив прекомпиляции?

Я только что обновил проект Angular2 до RC4, и теперь маршрутизатор отправляет это предупреждение в консоли при открытии моего приложения:

router.umd.js:2466 'FrontpageComponent' not found in precompile array.  To ensure all components referred to by the RouterConfig are compiled, you must add 'FrontpageComponent' to the 'precompile' array of your application component. This will be required in a future release of the router.

Я попытался выяснить, что именно мне нужно сделать, чтобы исправить это, но поскольку документация разрежена, я не могу найти ответ. Что это за прекомпилируемый массив и где я могу его найти или как его добавить?

4b9b3361

Ответ 1

В новых версиях маршрутизатора это больше не нужно.

<= RC.4

Это просто дополнительный параметр декоратора @Component() или @Directive():

@Component({
  selector: '...',
  template: '...',
  directives: [FrontpageComponent],
  precompile: [FrontpageCmponent]
})

https://github.com/angular/angular/blob/6c5b653593eff19c5b9342b2cf0195aca49379cb/modules/%40angular/core/src/metadata/directives.ts#L968

/**
* Определяет компоненты, которые необходимо предварительно скомпилировать, когда * этот компонент определен. Для каждого из перечисленных здесь компонентов,
* Angular создаст {@link ComponentFactory ComponentFactory} и сохранит его в файле * {@link ComponentFactoryResolver ComponentFactoryResolver}.

Ответ 2

В директивах нет необходимости определять. Используйте код ниже

    @Component({
  selector: '...',
  template: '...',
  directives: [],
  precompile: [FrontpageCmponent]
})

Ответ 3

Если вы обновите свой "@ angular/router": "3.0.0-beta.1" до "@angular/router": "3.0.0-beta.2"..

Ответ 4

Как я уже заметил, если бы я определил компонент с "redirectTo" в конфигурации маршрута, то компонент также должен быть предварительно прекомпилирован в корневом приложении.

Ответ 5

Вы должны добавить свой компонент в массив precompile в мясных файлах вашего компонента приложения, чтобы избавиться от этого сообщения.

@Component({
selector:'my-app',    
template:`YOUR HTML
    <router-outlet></router-outlet>`
,styleUrls:['app/app.component.css']
,directives:[ROUTER_DIRECTIVES]
,providers:[YOURPROVIDERS]
,precompile:[YOURCOMPONENT]})
export class AppComponent{}