如何在自定义NgbDatepickerKeyboardService中从NgbDatepicker获取ElementRef?

问题描述

我有一个自定义服务,该服务扩展了NgbDatepickerKeyboardService,并且我需要在processKey方法获取DateRefer的ElementRef。主要思想是获取ElementRef并从该引用中进行查询,以尝试查找第二天的div(我需要检查div是否具有一个类)。

public processKey(event: KeyboardEvent,datepicker: NgbDatepicker): void {
    const state = datepicker.state;
    // how to get it here? NgbDatepicker does not have any public prop to do it
}

解决方法

您不能在Services中使用ViewChild / ViewChildren,但可以使用纯JS访问DOM。您只需要声明一个“ id”属性或“类”即可从服务中指出。如果使用“ id”属性,则可以按以下方式查询:

document.getElementById('myDatePicker')

上面的句子将是组件中的一个示例:

this.myDatePickerViewChild.nativeElement

如果有几个控件,您可以使用以下命令指出它们中的一个普通类:

document.getElementsByClassName('<<your common class name>>');

通过这种方式,您可以获取所有选择器并对其进行迭代以执行您想要的操作。