То, что я сделал до сих пор (и что работало нормально)
У меня есть угловое приложение, которое используется несколькими различными клиентами, которое я в настоящее время обновляю с углового 4 до углового 6. Клиенты имеютих собственные отличающиеся расширения, поэтому в angular 4 я создал один модуль для каждого клиента (который настраивает настройки), а затем я создал один файл environment.CUSTOMER_NAME.ts
для каждого клиента с содержанием, подобным этому:
export const environment: Environment = {
extraModules: [MODULE_FOR_THIS_CUSTOMER]
};
Затемв моем основном модуле я использовал:
@NgModule({
imports: (<Array<Type<any> | ModuleWithProviders | any[]>>[
BrowserModule,
FormsModule,
/* .. */
].concat(environment.extraModules)),
/* .. */
})
export class AppModule { }
Это прекрасно работало.Запустив ng build --env=SOME_CUSTOMER
, соберите все приложение, включая модули для этого конкретного клиента.
Проблема
Теперь я обновился до версии Angular 6 и получил ошибку:
ERROR in : 'router-outlet' is not a known element:
1. If 'router-outlet' is an Angular component, then verify that it is part of this module.
2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. ("[ERROR ->]<router-outlet></router-outlet>")
После дня наращивания седых волос и решения уволиться с работы и стать водителем автобуса, я в конце концов понял, что моя concat
команда, кажется, является корнем проблемы.По крайней мере, это в сочетании с параметрами
"aot": true,
"buildOptimizer": true,
в файле angular.json
.Если я установлю оба из них на false, все будет работать нормально, даже с моей старой структурой.Удаление команды concat
также устраняет проблему.
Естественно, я не хочу оставлять эти опции отключенными, так что я могу сделать, чтобы модуль по-прежнему включался, только если активна определенная конфигурация?