在AngularIonic应用程序中,我希望显示一个模态,呈现来自动态加载组件的内容。
我使用的是ion-modal
标记,但由于它使用ng-template
标记来显示内容,因此我无法访问其中的主机容器:
这是一个Stackblitz demo,显示不工作的代码。
在这里你可以看到我的主机div在ng-template里面:
<ion-modal [trigger]="'open-modal-2'">
<ion-content [scrollY]="false">
<ng-template>
<div #myHost></div> <!-- host inside ng-template! -->
</ng-template>
</ion-content>
</ion-modal>
当我尝试访问myHost时,它是undefined
(即使使用AfterViewInit):
export class AppComponent implements AfterViewInit {
@ViewChild('myHost', { static: false, read: ViewContainerRef }) myHost;
ngAfterViewInit(): void {
console.log(this.myHost); // undefined
const componentRef = this.myHost.createComponent(HelloComponent);
}
}
1条答案
按热度按时间pdkcd3nj1#
我得出的结论是,对于这种情况,有必要使用离子
ModalController
而不是ion-modal
。这是正在工作的Stackblitz demo。
app.component.ts
注入ModalController服务并创建用于呈现模态的方法:app.component.html
将click事件分配给方法:custom.component.ts
创建将插入模态的组件;它还注入ModalController,以便可以解除:custom.component.html
只是一个简单的表单,有两个按钮: