angular - 如何观察“mat-datepicker”中的方法(来自另一个组件)
问题描述
我mat-datepicker
在组件中使用:
html:
<input
[(ngModel)]="date.from"
[matDatepicker]="picker"
[value]="fDate.value"
formControlName="dateFrom"
id="dateFrom"
matInput
name="dateFrom"
required
>
<mat-datepicker-toggle [for]="picker" matSuffix></mat-datepicker-toggle>
<mat-datepicker #picker [calendarComponent]='calendarButtons'></mat-datepicker>
ts:
export class TempComponent implements OnInit {
calendarButtons = CalendarButtonsComponent;
// ...
constructor() {}
ngOnInit() {
this.fDate = new FormControl(moment());
this.date = {
from: this.fDate.value,
}
}
}
在CalendarButtonsComponent
组件中我有clean
方法
html:
<mat-icon (click)="nextClicked('month')">keyboard_arrow_right</mat-icon>
<mat-icon (click)="clean($event)">close</mat-icon>
ts:
export class CalendarButtonsComponent<D> implements OnDestroy {
@Output() eventEmitter = new EventEmitter<string>();
private _destroyed = new Subject<void>();
constructor(
private _calendar: MatCalendar<D>,
private _dateAdapter: DateAdapter<D>,
@Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats,
cdr: ChangeDetectorRef,
) {
_calendar.stateChanges
.pipe(takeUntil(this._destroyed))
.subscribe(() => cdr.markForCheck());
}
get periodLabel() {
return this._dateAdapter
.format(
this._calendar.activeDate,
this._dateFormats.display.monthYearLabel
)
.toLocaleUpperCase();
}
ngOnDestroy() {
this._destroyed.next();
this._destroyed.complete();
}
nextClicked(mode: 'month' | 'year') {
this._calendar.activeDate = mode === 'month'
? this._dateAdapter.addCalendarMonths(this._calendar.activeDate, 1)
: this._dateAdapter.addCalendarYears(this._calendar.activeDate, 1);
}
clean() {
}
}
我想使用该clean
方法来清理 date.from 模型。模型 ( this.date.from
) 在TempComponent
组件中。
我不知道组件中发出的事件是如何在CalendarButtonsComponent
组件中被监听的TempComponent
。
请帮忙。
解决方案
使用输出...
在日历按钮组件中:
@Output() onClean = new EventEmitter<void>();
clean() { this.onClean.next(); }
然后在父模板中:
<calendar-buttons (onClean)="fDate.reset()"></calendar-buttons>
推荐阅读
- macos - Mac Os 10.13 随机注销我 | 帮助阅读日志
- java - java.lang.RuntimeException:在模块 annotations-16.0.1.jar 和 annotations-java5-15.0.jar 中找到重复的类 org.intellij.lang.annotations.Flow
- java - Android - 向数据库添加更多表的 SQLite 问题
- node.js - 尝试运行 nodejs 命令行但出现意外错误
- c# - ssis c#脚本任务:“else”无法捕捉窗口服务的正确状态
- python-3.x - 已安装包 python 的语法无效
- c - 在 gcc 中编译时关于警告输出的最佳实践?
- c# - 选项卡以外的 Xamarin 选项卡式页面内容
- python - django 阿拉伯语回历
- c# - 如何在另一个方法中使用 main() 方法中定义的值