【发布时间】:2021-09-30 22:22:51
【问题描述】:
我有一个包含模式的组件。模态框包含在 <ng-template> 标记中。
<ng-template #modalm let-modal>
...
<button type="button" (click)="onSubmit()" class="btn btn-primary">OK</button>
...
</ng-template>
这允许我从我的 component.ts 文件中打开和关闭模式。
constructor(private modalService: NgbModal,
private activeModal: NgbActiveModal)
...
public openModal(modalm: TemplateRef<any>){
this.activeModal = this.modalService.open(modalm);
const btn = modalm.elementRef.nativeElement.querySelector('.btn-primary');
}
我想访问按钮元素并在其上设置一个属性。我正在关注How do I find Element inside TemplateRef 中接受的答案,从modalm.elementRef.nativeElement 中调用querySelector。这给了我一个错误:
TypeError: modalm.elementRef.nativeElement.querySelector is not a function
为什么在这种情况下我无法拨打querySelector?
我知道我必须使用 TemplateRef 类型,因为模态被包裹在 ng-template 中。访问模态元素的正确语法是什么?
【问题讨论】:
-
你应该避免依赖
.querySelector。你为什么不尝试通过NgbModalRef#componentInstance传递所需的选项呢? -
@developer033 我可以为模态创建一个单独的组件。这是必需的还是我可以从该组件的 component.ts 文件中访问 html 元素?
标签: angular typescript bootstrap-5