我正在使用timepicker from the NG Bootstrap library,但是我想在滚动到午夜时切换日期。我正在使用自定义时间适配器将日期建模为日期而不是/my/install/location
对象,并且将日期缓存在适配器中,因此当我从NgbTimeStruct转换时,它会转换为正确的日期。 / p>
当我想从组件更改日期时出现问题。在这种情况下,我需要在时间适配器上调用一个可以更改缓存日期的方法,但是我无法访问适配器类的实例。
我正在将其提供给在providers数组中使用它的组件:
NgbTimeStruct
在同一组件中,我想通过在类上调用providers: [
{ provide: NgbTimeAdapter, useClass: NgbTimeDateAdapter }
]
方法来更改日期,但是它需要在与时间选择器使用的实例相同的实例中更新缓存的值。如果我将适配器分别提供给组件,则可以调用所需的方法,但这是一个不同的实例,因此帮助不大。
NgbTimeDateAdapter.updateCachedDate
如何使用useClass方法访问使用providers数组注入的类的正确实例?
NgbTimeDateAdapter
@Component({
selector: 'app-time-component',
templateUrl: './time.component.html',
styleUrls: ['./time.component.css'],
providers: [
NgbTimeDateAdapter,
{ provide: NgbTimeAdapter, useClass: NgbTimeDateAdapter }
]
})
export class TimeComponent implements OnInit {
constructor (
private ngbTimeDateAdapter: NgbTimeDateAdapter
) { }
// ...
setAsNextDay () {
this.ngbTimeDateAdapter.updateCachedDate(1);
}
setAsPreviousDay () {
this.ngbTimeDateAdapter.updateCachedDate(-1);
}
}