BrowserModule уже загружен Ошибка

Я обновил свое приложение до RC6, и теперь я продолжаю получать эту ошибку:

zone.js: 484 Необработанное отклонение обещания: BrowserModule уже были загружены. Если вам нужен доступ к общим директивам, таким как NgIf и NgFor от ленивого загруженного модуля...

Я использую ленивую загрузку, и мое приложение разбито на множество ленивых загружаемых модулей. Однако в RC5 все работало нормально.

Единственное изменение, которое мне удалось найти в журнале изменений для RC6, заключается в следующем:

компилятор: описать ошибку описательной ошибки для недопустимого NgModule провайдеры

Но так как я не видел никаких ошибок в RC5, это, вероятно, здесь не применимо.

Я немного из идей, поэтому любая помощь очень ценится.

Ответ 1

Мне удалось решить мою проблему. Одна из библиотек, которые я использовал, импортировала BrowserModule.

Я просто оставлю вопрос здесь, если у кого-то будет такая же проблема.

Ответ 2

Я думаю, что вы используете '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 {}

Ответ 3

В моем случае я использовал BrowserAnimationsModule в каждом компоненте, который использует дизайн материала, я удалил все ссылки на "BrowserAnimationsModule" и поместил BrowserAnimationsModule в основной модуль.

BrowserAnimationsModule имеет встроенный BrowserModule, это проблема.

Ответ 4

Как описание ошибки самоочевидно, модуль, для которого вы хотите реализовать ленивую загрузку, не должен импортировать 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 полезным. Отправляя ответ оттуда.

Ответ 5

Я столкнулся с проблемой симуляции. У меня есть несколько ленивых модулей, которые все используют BrowserAnimationModule (включает BrowserModule).

Сначала я решил перенести импорт этого модуля из дочернего модуля в корневой модуль как app.module.ts.

//app.module.ts
@NgModule({
    declarations: [  ],
    imports: [    BrowserAnimationsModule,]

Второй шаг очень важен, вы также должны включить CommonModule в каждый дочерний модуль.

//lazychild.module.ts
@NgModule({
  declarations: [  ],
  imports: [  CommonModule,]

Ответ 6

Я решил это, используя это в моем app.component.ts:

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
  imports: [
..,
    BrowserAnimationsModule,
  ],

и удалил его из другого места.

Ответ 7

Как описано здесь Страница angular проблем, вы можете создать Shared Module и добавить туда все импорты только один раз и импортировать этот модуль везде, где вы делаете новый модуль.