【问题标题】:How to use bootstrap datepicker input field in angular2如何在angular2中使用引导日期选择器输入字段
【发布时间】:2016-11-16 05:10:47
【问题描述】:

我已经按照下面提到的步骤,我已经能够达到以下图像。

  1. 安装 nodejs 6.9.1 版本。它带有 npm 3.10.8
  2. 然后我关注了以下installation steps
  3. 现在,当我尝试使用<ngb-datepicker></ngb-datepicker> 时,我能够看到这种类型的屏幕。

但我无法理解如何使用input[ngbDatepicker]

我尝试了<input ngbDatepicker />,但只出现了一个文本框。当我关注它时,它没有显示日期选择器。

这是我正在使用的link

【问题讨论】:

  • 您是否在 HTML 中添加了 bootstrap css ?
  • 是的。添加这个后,设计得到了改变。但没有什么额外的。

标签: angular datepicker ng-bootstrap


【解决方案1】:

要在焦点上显示日期选择器,您可以使用focus 输入事件,如下所示:

<input ngbDatepicker #d="ngbDatepicker" (focus)="d.open()">

或者您可以按照Datepicker in a popupDatepicker 的示例在按钮单击时添加触发toggle 日期选择器事件

// Component
@Component({
  selector: 'ngbd-datepicker-popup',
  templateUrl: './datepicker-popup.html'
})
export class NgbdDatepickerPopup {
  model;
}

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

【讨论】:

【解决方案2】:

经过大量工作并得到ranakrunal9的建议。我已经达到了以下代码库。它在各个方面都运行良好(但我仍然只有一个问题,如果我在日期选择器之外单击,日期选择器不会被关闭)这是plunker

import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {NgbModule, NgbDateParserFormatter, NgbDateStruct} from '@ng-bootstrap/ng-bootstrap';
import { Component, OnInit, Input, forwardRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';

@Component({
  imports: [
    NgbModule,
    BrowserModule,
    NgbDateParserFormatter
  ],
  selector: 'my-app',
  templateUrl: 'template.html'
})
export class App {


}

@NgModule({
  imports: [ BrowserModule, 
    NgbModule.forRoot()],
  providers : [
    {provide: NgbDateParserFormatter, useClass: forwardRef(() => CustomDateParserFormatter)}
  ],
  declarations: [ App ],
  bootstrap: [ App ]
})
export class AppModule {}



export class CustomDateParserFormatter extends NgbDateParserFormatter {
  parse(value: string): NgbDateStruct {
    if (value) {
      const dateParts = value.trim().split('/');
      /*
     Put your logic for parsing
      */
    }
    return null;
  }

  format(date: NgbDateStruct): string {
    return date ?
        date.day+'/'+date.month+'/'+date.year :
        '';
  }
}

【讨论】:

  • 你知道如何在模糊时关闭它吗?我尝试绑定(模糊)来执行 d.close()。问题是,“使用日历”也算作模糊,所以日历在我选择日期之前就关闭了。
  • 是的,我也发现了同样的问题,还没有解决。如果您可以提出一个新问题并将其链接到此处,我认为这会有所帮助。还请创建一个 plunker。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多