#angular #angular-cli #ngx-bootstrap
#angular #angular-cli #ngx-bootstrap
Вопрос:
Я использую datepicker из ngx-bootstrap@3.2.0 в проекте Angular 6.1.10. Я также загружаю другую локаль (nlLocale).
В моем функциональном модуле:
import { defineLocale, nlLocale, BsDatepickerModule, BsLocaleService} from 'ngx-bootstrap';
defineLocale('nl', nlLocale);
В моем компоненте:
import { BsLocaleService } from 'ngx-bootstrap';
export class MyComponent implements OnInit {
locale = 'nl';
constructor(private bsLocaleService: BsLocaleService) {
this.bsLocaleService.use(this.locale);
}
}
Когда я создаю это с помощью команды:
ng build --watch
У меня нет проблем, я могу запустить приложение, использовать datepicker, и месяцы отображаются на голландском языке.
Однако, когда я создаю для производства:
ng build --prod
Я получаю следующую ошибку:
ОШИБКА в ./node_modules/ngx-bootstrap/datepicker/fesm5/ngx-bootstrap-datepicker.js Модуль не найден: Ошибка: не удается разрешить ‘ngx-bootstrap / loader’ в ‘E:MyProjectnode_modulesngx-bootstrapdatepickerfesm5 ‘ ОШИБКА в ./node_modules/ngx-bootstrap/modal/fesm5/ngx-bootstrap-modal.js Модуль не найден: Ошибка: не удается разрешить ‘ngx-bootstrap / loader’ в ‘E:MyProjectnode_modulesngx-bootstrapmodalfesm5 ‘
Я искал файл ‘ngx-bootstrap-datepicker.js ‘который существует в ‘fesm5′, но я не вижу внутри файла ссылки на что-либо, связанное с ngx-bootstrap / loader’.
Я попытался понизить рейтинг до ngx-bootstrap@3.0.1 и это работает, поэтому это явно указывает на проблему с ngx-bootstrap, но из некоторого чтения, которое я делал, у других, похоже, нет этой проблемы.
Кто-нибудь сталкивался с этим раньше?
Ответ №1:
Вы выполнили следующее в модальном режиме функции?
@NgModule({
imports: [BsDatepickerModule.forRoot(),...]
})
если это так, попробуйте o вместо этого добавить его в свой корневой модуль
Комментарии:
1. Пробовал оба, тот же результат
2. Можете ли вы обновить свой пост о том, как выглядят ваши модули?
Ответ №2:
В настоящее время я использую Angular 9 с последней версией ngx-bootstrap. Я полагаю, что последняя реализация заключается в импорте BsDatepickerModule в файл app.module.ts следующим образом
Инструкция импорта в коде app.module.ts:
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
при импорте app.module.ts:
imports: [
BrowserAnimationsModule,
BsDatepickerModule.forRoot()
]
Код компонента:
import { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';
@Component({ selector: 'app-', templateUrl: './register.component.html', styleUrls: ['./register.component.css'],
})
export class RegisterComponent implements OnInit {
bsConfig: Partial<BsDatepickerConfig>;
constructor() {}
ngOnInit() {
this.bsConfig = Object.assign({}, { containerClass: 'theme-blue' });
}
}
package.json
«@angular/core»: «~ 9.1.7», «bootstrap»: «^ 4.5.0», «ngx-bootstrap»: «^ 5.6.1», «@angular / cli»: «~ 9.1.6»
С официального сайта:
Использование
импортируйте { BrowserAnimationsModule} из ‘@angular/platform-browser /animations’;
// РЕКОМЕНДУЕТСЯ
импортируйте { BsDatepickerModule} из ‘ngx-bootstrap / datepicker’;
// НЕ РЕКОМЕНДУЕТСЯ (Angular 9 не поддерживает этот вид импорта)
импортируйте { BsDatepickerModule} из ‘ngx-bootstrap’;
@NgModule({
импортирует: [
BrowserAnimationsModule,
BsDatepickerModule.forRoot(),
...
]
})
экспортировать класс AppModule(){}
Комментарии:
1. Для более новых версий состояние импорта — import { BsDropdownModule } из ‘ngx-bootstrap / dropdown’; Возможно, вам придется перестроить после добавления библиотеки, а также использовать Angular cli для добавления инструмента вместо npm с помощью этой команды. ng add ngx-bootstrap введите Ctrl C, чтобы остановить приложение, и ng serve —watch, чтобы перестроить его
2. Я думаю, что с Angular 6-8 вы все еще можете следовать старым реализациям. Наилучшая стратегия — определить версию ngx-bootstrap в вашем файле package.json и найти документацию на официальном сайте valor-software.com/ngx-bootstrap /# , соответствующий вашей версии