我正在尝试使用bootstrap ngbdatepicker我添加了datepicker选择器到appcomponent.html并且datepicker开始显示在那里现在我需要将该模型值读入控制器所以我可以将它传递给父appcomponent,因为我在datepicker上添加(更改)方法但它是从输入中删除该方法,以便如何读取并将该值传递给父级 . 是否有任何其他选项可以在控制器中读取该值并传递给父级
提前致谢
下面是我使用子选择器在这里打开datepicker的模板我添加了更改方法,但它没有触发日期选择,所以我无法发出事件
父组件:
<ng-template #modalContent let-close="close" *ngIf="true">
<div class="modal-header">
<h5 class="modal-title">Add new event</h5>
<button type="button" class="close" (click)="close()">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<label>Start Date</label><date-pick (change)="updateFromChild($event)"></date-pick>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" (click)="close()">OK</button>
</div>
</ng-template>
Child Component:
import {Component, Input, Output, EventEmitter} from '@angular/core'
@Component({
selector: 'date-pick',
templateUrl: './datepicker-popup.html'
})
export class NgbdDatepickerPopup {
model;
constructor(){ }
@Output() change: EventEmitter<any> = new EventEmitter<any>();
onChange() {
console.log('call');
this.change.emit(this.model)
}
}
Child Template:
<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" (change)="onChange()">
<div class="input-group-append">
<button class="btn btn-outline-secondary" (click)="d.toggle()" type="button">
<img src="img/calendar-icon.svg" style="width: 1.2rem; height: 1rem; cursor: pointer;"/>
</button>
</div>
</div>
</div>
</form>
1 回答
根据你的输入,我确实喜欢这个,它的工作
已安装:
npm install --save @ng-bootstrap/ng-bootstrap
app.component.html
app.component.ts
datepicker.component.html
datepicker.component.ts
而不是
(change)="onChange()"
使用ngOnModleChange
,所以它应该是(ngModelChange)="onChange($event)"
在angular中你可以做绑定
[(ngModel)]='propety'
来执行双向绑定来控制 .如果您有父子组件方案而不是您需要
EventEmitter
,则将值发布到您的父组件 . 所以你需要这个在父组件中它应该是