玩弄NgbModal并想从模板代码之外的其他地方触发open方法->open(content: string | TemplateRef<any>, options: NgbModalOptions)<button (click)="open(content)">Launch demo modal</button>)运行该方法时,代码工作得很好,当然,html文件中<template></template>中的所有代码都工作得很好。
试着用这个来完成一些事情:

logoutScreenOptions: NgbModalOptions = {
    backdrop: 'static',
    keyboard: false
};

lockedWindow: NgbModalRef;

lockedScreenContent= `
    <template #content let-c="close" let-d="dismiss">
        <div class="modal-header" style="text-align: center">
            <h3 class="modal-title">Title</h3>
        </div>
        <div class="modal-body">
            <p>Body</p>
        </div>
        <div class="modal-footer">
            <p>Footer</p>
        </div>
    </template>
`;

openLockedScreen(){
    this.open(this.lockedScreenContent);
}

open(content) {
    console.log(content);
    this.lockedWindow = this.modalService.open(content, this.logoutScreenOptions);
    this.lockedWindow.result.then((result) => {
        this.closeResult = `Closed with: ${result}`;
    }, (reason) => {
        this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
    });
}

代码运行时没有错误,并且模式的打开方式如下:
Modal without rendered content
……这不是我想要的!
也尝试过,结果完全一样:
lockedScreenContent= `
    <div class="modal-header" style="text-align: center">
        <h3 class="modal-title">Title</h3>
    </div>
    <div class="modal-body">
        <p>Body</p>
    </div>
    <div class="modal-footer">
        <p>Footer</p>
    </div>
`;

我错过了什么?难道不能传递一个字符串作为“content”参数吗?
我也不知道如何使用ts文件中的templateref参数!

最佳答案

从今天起,https://ng-bootstrap.github.io/#/components/modalopen方法具有以下特征:open(content: string | TemplateRef<any>, options: NgbModalOptions)。从该签名中可以看到,您可以打开提供以下内容的模态:
string
TemplateRef
string类型的参数不是很有趣-实际上它主要是为了帮助调试/单元测试而添加的。用它你可以通过…好吧,一段文本,没有任何标记不是角度指令。因此,它实际上是一个调试工具,而不是在实际场景中有用的东西。
TemplateRef参数更有趣,因为它允许您传递要显示的markup+指令。您可以通过在组件模板(您计划从中打开模态的组件模板)中的某个位置执行TemplateRef操作来获得<template #refVar>...content goes here...</template>。因此,TemplateRef参数非常强大,因为它允许您使用标记、指令、其他组件等。缺点是,TemplateRef仅在您从具有模板的组件打开模式时才有用。
我的印象是,您正在寻找计划中但尚未实现的功能—能够以组件类型作为内容打开模式。它的工作原理如下:modalService.open(MyComponentWithContent)。正如我所提到的,这是路线图的一部分,但尚未实现。您可以通过以下方式跟踪此功能https://github.com/ng-bootstrap/ng-bootstrap/issues/680

07-24 09:54