我尝试创建在组件之间传递日期的服务,但它只能在组件中工作。
@Injectable()
export class SelectedDateService {
private checkin = new Subject<string>();
checkin$ = this.checkin.asObservable();
private checkout = new Subject<string>();
checkout$ = this.checkout.asObservable();
setCheckIn (start: string) {
this.checkin.next(start);
}
setCheckOut (end: string) {
this.checkout.next(end); }
}
在第一个组件中,我在构造函数方法中设置我的服务,然后我调用了 ngOnInit方法
constructor( private dateselectService: SelectedDateService) { }
ngOnInit() {
this.dateselectService.checkin$.subscribe(
checkin => {this.date.checkIn = checkin;});
this.dateselectService.checkout$.subscribe(
checkout => {this.date.checkOut = checkout;});
}
并在html的输入字段中添加了点击事件,该事件记录了输入日期并在服务中设置了日期
onDateChanged(event) {
if (event.formatted !== '' || event !== undefined ){
this.selected = '#26a69a';
this.selectedText = event.formatted ;
this.dateselectService.setCheckIn(event.formatted );
}else {
this.selectedText = '';
}
}
我在ngOninit方法中添加getter的原因只是为了获取日期(如果之前已经设置过)。 请注意,我对第二个组件做了同样的事情,以便第一个组件已经设置了任何日期