【问题标题】:angular 2 ng-bootstrap datepicker popup角度 2 ng-bootstrap 日期选择器弹出窗口
【发布时间】:2016-09-23 05:23:53
【问题描述】:

您好,我正在研究 ng-bootstrap datepicker。我查看了演示代码,并能够让它在我的应用程序中工作。

但是,如果我添加了超过 1 个 datepicker 输入标签,则只有一个有效。下面是我创建的代码。我尝试将#d 更改为#d1 和#d2(同时更改toggle() 部分)并且页面吐出错误。

<div class="input-group">
    <input class="form-control" placeholder="yyyy-mm-dd" name="dp" [(ngModel)]="newItem.EndTime"  ngbDatepicker #d="ngbDatepicker" required>
    <div class="input-group-addon" (click)="d.toggle()" >
        <i class="fa fa-calendar" aria-hidden="true"></i>
    </div>
</div>

<div class="input-group">
    <input class="form-control" placeholder="yyyy-mm-dd" name="dp" [(ngModel)]="newItem.StartTime"  ngbDatepicker #d="ngbDatepicker" required>
    <div class="input-group-addon" (click)="d.toggle()" >
        <i class="fa fa-calendar" aria-hidden="true"></i>
    </div>
</div>

我还尝试用一个组件包装它,它允许我为不同的属性拥有多个 datepicker 实例。但是,它似乎没有将值传递回父组件。

new.campaign.html

<div class="row col-md-12 col-lg-12">
    <div class="col-md-4 col-lg-4">
        <label for="campaignStartTime">Start Time</label>
        <datepicker-popup [(model)]="newItem.StartTime" (modelChange)="updateDate($event)" [required]="true" id="campaignStartTime"></datepicker-popup>
    </div>
</div>

datepicker-popup.component.ts

import {Component, Input, Output, EventEmitter} from '@angular/core';
    @Component({
selector: 'datepicker-popup',
templateUrl: 'app/campaign/datepicker-popup.html'
    })
    export class DatepickerPopupComponent {
    @Input()
    model:any;
    @Input()
    id:string;
    @Input()
    required:boolean=false;
    @Output()
    modelChange: EventEmitter<any> = new EventEmitter();

    constructor(){    }
    updateModel(){
    let date = this.model;
    date = '12/22/2016'
    this.modelChange.emit(date);
    }
    }

datepicker-popup.html

<div class="input-group">
    <input class="form-control" placeholder="yyyy-mm-dd" name="dp [(ngModel)]="model"  (change)="updateModel()" ngbDatepicker #d="ngbDatepicker" required>
    <div class="input-group-addon" (click)="d.toggle()" >
        <i class="fa fa-calendar" aria-hidden="true"></i>
    </div>
</div>

有人能指出解决问题的正确方向吗?

【问题讨论】:

  • 你能用github.com/valor-software/ng2-bootstrap 来代替angular2吗?
  • @HarryNinh AFAIK ng2-bootstrap not 支持弹出窗口中的日期选择器,并且用户专门要求ng-bootstrap.github.io,因此您的评论没有帮助。
  • @pkozlowski.opensource 我在当前项目中对所有日期字段使用 ng2-bootstrap,所以我知道它确实支持弹出日期选择器。而且因为他正在寻找 ng-bootstrap 解决方案,所以我没有将其发布为答案。

标签: angular datepicker ng-bootstrap


【解决方案1】:

我尝试将#d 更改为#d1 和#d2(同时更改toggle() 部分)并且页面吐出错误。

必须有一些特定于您的应用程序的东西,因为这是正确的方法。一个工作代码sn-p:

 <div class="input-group">
        <input class="form-control" placeholder="yyyy-mm-dd" name="dp1" [(ngModel)]="newItem.EndTime"  ngbDatepicker #d1="ngbDatepicker" required>
        <div class="input-group-addon" (click)="d1.toggle()" >
            <i class="fa fa-calendar" aria-hidden="true"></i>
        </div>
    </div>

    <div class="input-group">
        <input class="form-control" placeholder="yyyy-mm-dd" name="dp2" [(ngModel)]="newItem.StartTime"  ngbDatepicker #d2="ngbDatepicker" required>
        <div class="input-group-addon" (click)="d2.toggle()" >
            <i class="fa fa-calendar" aria-hidden="true"></i>
        </div>
    </div>

还有 plunker 中的实时示例:https://plnkr.co/edit/ZC3dOX9anbbNUMPEEd5W?p=preview

确认您有唯一的输入名称,并且您使用指向指令实例的唯一变量名称(#d1#d2 等)。如果您仍然遇到问题,请在我链接的 plunker 中复制它并在https://github.com/ng-bootstrap/ng-bootstrap 中打开一个问题

【讨论】:

  • 感谢您的回复。我又试了一次,这次成功了!一定是深夜,当时正在发生一些奇怪的事情。谢谢!!!!
  • 这对于反应式表单来说如何可行?
猜你喜欢
  • 2016-07-19
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多