angular - 以编程方式打开 ng-bootstrap 模式

标签 angular typescript modal-dialog ng-bootstrap ng-template

我有一个包含 ng-bootstrap 模态的 angular 4 页面。我的代码如下所示。

foo.html

[...]
<button class="btn btn-sm btn-secondary material-icons"
(click)="open(content)">search</button>

<ng-template #content let-c="close" let-d="dismiss">
    content in here
</ng-template>
[...]

foo.ts

[...]
constructor(private modalService: NgbModal) { }
[...]
open(content) {
   let options: NgbModalOptions = {
     size: 'lg'
   };

   this.modalService.open(content, options);
}
[...]

现在,当我单击按钮时,模式打开。我现在要做的是在 ngChanges 上打开模型。

ngOnChanges(changes: any) {
   open(content)
}

我的问题是:如何获取此处的“内容”?有没有办法以编程方式获取 ng-template?提前致谢!

最佳答案

要访问类中的 content 元素,请声明:

@ViewChild('content', { static: false }) private content;
                         ^for Angular8+

并在类的顶部添加相应的导入:

import { ViewChild } from '@angular/core';

最后在变化检测时为该元素调用 open 方法:

ngOnChanges(changes: any) {
   this.open(this.content);
}

关于angular - 以编程方式打开 ng-bootstrap 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45133209/

相关文章:

javascript - Angular .js :68 Uncaught Error: [$injector:unpr] Unknown provider: pendingRequestsProvider <- pendingRequests <- $http <- $templateRequest <- $compile

javascript - 如何显示多个对话框polyfill?

php - 在模式中单击按钮后重定向到另一个页面

angular - 如何在 Angular 2 NgForm 上观察触摸事件?

angular - 文本溢出 : ellipsis in mat-expansion-panel header

javascript - Express-validator 的默认 sanitizer 在链接时不起作用

jquery - 使用 jquery 访问 twitter bootstrap modal-body 内容

javascript - Ionic2 + Angular2 - 试图分配给只读属性

node.js - ionic 应用程序在链接包中找不到提供者

typescript - 简单的 TypeScript 辅助函数