2016-09-23 68 views
2

您好,我正在调查ng-bootstrap datepicker。我查看了演示代码,并能够在我的应用程序中使用它。angular 2 ng-bootstrap datepicker popup

但是,如果我添加了多个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> 

日期选择器,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); 
    } 
    } 

日期选择器,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> 

有人点我到正确的方向解决这个问题?

+0

你可以使用https://github.com/valor-software/ng2-bootstrap for angular2? –

+0

@HarryNinh AFAIK ng2-bootstrap does not not support for datepickers in popups and a user is asking for specific for https://ng-bootstrap.github.io所以你的评论是没有用的。 –

+0

@ pkozlowski.opensource我在当前项目中使用了ng2-bootstrap所有日期字段,所以我知道它支持弹出日期选择器。而且因为他正在寻找ng-bootstrap解决方案,所以我没有将它作为答案发布。 –

回答

5

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

由于这是正确的方法,您的应用程序必须有特定的内容。一个工作代码片段:

<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等独特的变量名称)。如果你仍然面临问题重现它在掠夺者我已经链接并打开一个问题https://github.com/ng-bootstrap/ng-bootstrap

+0

谢谢你的回应。我再次尝试,这次它的工作!一定是深夜,当时有些奇怪的事情发生。谢谢!!!! – Chuck

+0

这对于反应形式如何可行? –