ng-bootstrap datepicker не работает

Я пытаюсь использовать средство выбора даты ng-bootstrap в моем проекте angular2, но получаю следующую ошибку.

There is no directive with "exportAs" set to "ngbDatepicker"

Вот мой код

<form class="form-inline">
  <div class="form-group">
     <div class="input-group">
         <input class="form-control" placeholder="yyyy-mm-dd"
         name="dp" [(ngModel)]="model" ngbDatepicker #d="ngbDatepicker">
          <button class="input-group-addon" (click)="d.toggle()" type="button">
    <img src="img/calendar-icon.svg" style="width: 1.2rem; height: 1rem; cursor: pointer;"/>
  </button>
</div>

Любая помощь будет оценена

3 ответа

У меня была такая же проблема. В моем случае отсутствовал импорт NgbModule в модуле, где использовалась директива. Итак, дважды проверьте, что вы импортируете NgbModule.forRoot() в почтовый модуль и NgbModule в каждом модуле, используя datapicker.

Для того, чтобы открыть DatePicker на focus событие, вам нужно добавить (focus)="d.open()" как ниже:

<input type="text" [(ngModel)]="date" ngbDatepicker #d="ngbDatepicker" (focus)="d.open()" name="date_start" class="form-control"/>

Решение этой проблемы очень простое. В каталоге вашего проекта найдите файл с именем app.module.ts, который является AppModule (корневой модуль).

В этом файле под @NgModule будет массив импорта. Добавьте в него FormsModule и NgbModule.forRoot(), как показано ниже.

app.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';


import { AppComponent } from './app.component';
import { NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    NgbModule.forRoot()
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Проверьте порядок импорта в вашем @NgModule

Вы должны положить FormsModule до NgbModule, и не забудь NgbModule.forRoot() в вашем корневом модуле

Добавить недвижимость autoClose="inside" и вставьте код в index.html

$("body").not("input[ngbdatepicker]").click(function (e) {
   if ($(e.target).not("input[ngbdatepicker]").length > 0 && 
       $(e.target).closest("ngb-datepicker").length == 0) {
       $("ngb-datepicker").remove();
   }
});
Другие вопросы по тегам