Ответ 1
Мне удалось решить мою проблему. Одна из библиотек, которые я использовал, импортировала BrowserModule
.
Я просто оставлю вопрос здесь, если у кого-то будет такая же проблема.
Я обновил свое приложение до RC6, и теперь я продолжаю получать эту ошибку:
zone.js: 484 Необработанное отклонение обещания: BrowserModule уже были загружены. Если вам нужен доступ к общим директивам, таким как NgIf и NgFor от ленивого загруженного модуля...
Я использую ленивую загрузку, и мое приложение разбито на множество ленивых загружаемых модулей. Однако в RC5 все работало нормально.
Единственное изменение, которое мне удалось найти в журнале изменений для RC6, заключается в следующем:
компилятор: описать ошибку описательной ошибки для недопустимого NgModule провайдеры
Но так как я не видел никаких ошибок в RC5, это, вероятно, здесь не применимо.
Я немного из идей, поэтому любая помощь очень ценится.
Мне удалось решить мою проблему. Одна из библиотек, которые я использовал, импортировала BrowserModule
.
Я просто оставлю вопрос здесь, если у кого-то будет такая же проблема.
Я думаю, что вы используете 'NoopAnimationsModule' или 'BrowserAnimationsModule', которые уже содержат 'BrowserModule' и загружаете свой модуль лениво. Поэтому решение заключается в замене BrowserModule на NoopAnimationsModule или BrowserAnimationsModule в вашем app.module.ts.
import { Router } from '@angular/router';
import { AdminsModule } from './admins/admins.module';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
//import { BrowserModule } from '@angular/platform-browser';
import { NgModule,OnInit } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
//BrowserModule,
NoopAnimationsModule,
FormsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
В моем случае я использовал BrowserAnimationsModule в каждом компоненте, который использует дизайн материала, я удалил все ссылки на "BrowserAnimationsModule" и поместил BrowserAnimationsModule в основной модуль.
BrowserAnimationsModule имеет встроенный BrowserModule, это проблема.
Как описание ошибки самоочевидно, модуль, для которого вы хотите реализовать ленивую загрузку, не должен импортировать BrowserModule, поскольку это уже было импортировано ранее (главным образом в app.component). Вы должны только импортировать BrowserModule один раз. Другие модули должны импортировать CommonModules вместо этого.
Смотрите код ниже для понимания
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; //<-- This one
import { SearchMovieMainComponent } from './search-movies-main.component';
@NgModule({
imports: [
CommonModule //<-- and this one
],
declarations: [
SearchMovieMainComponent
]
})
export class SearchMoviesMainModule {
}
Примечание. Это не мой собственный ответ. Я столкнулся с такой же проблемой. Там, где у меня есть CommonModule с тем же именем angular one. Так что это было действительно проблемой для меня, поскольку я не знал о том, что существует еще один "CommonModule" в самом angular. Я нашел этот blog полезным. Отправляя ответ оттуда.
Я столкнулся с проблемой симуляции. У меня есть несколько ленивых модулей, которые все используют BrowserAnimationModule (включает BrowserModule).
Сначала я решил перенести импорт этого модуля из дочернего модуля в корневой модуль как app.module.ts.
//app.module.ts
@NgModule({
declarations: [ ],
imports: [ BrowserAnimationsModule,]
Второй шаг очень важен, вы также должны включить CommonModule в каждый дочерний модуль.
//lazychild.module.ts
@NgModule({
declarations: [ ],
imports: [ CommonModule,]
Я решил это, используя это в моем app.component.ts
:
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
imports: [
..,
BrowserAnimationsModule,
],
и удалил его из другого места.
Как описано здесь Страница angular проблем, вы можете создать Shared Module
и добавить туда все импорты только один раз и импортировать этот модуль везде, где вы делаете новый модуль.