覆盖层组件
Ionic 提供了模态框和弹出框等覆盖层组件,用于在应用上方显示内容。在 Angular 中,这些覆盖层可以使用 ModalController 和 PopoverController 等控制器来创建。
创建覆盖层
覆盖层可以使用各自的控制器以编程方式创建:
import { Component } from '@angular/core';
import { ModalController } from '@ionic/angular/standalone';
import { MyModalComponent } from './my-modal.component';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
})
export class HomeComponent {
constructor(private modalController: ModalController) {}
async openModal() {
const modal = await this.modalController.create({
component: MyModalComponent,
componentProps: {
title: 'My Modal',
},
});
await modal.present();
}
}
自定义注入器
默认情况下,覆盖层组件使用根注入器进行依赖注入。这意味着在路由级别或特定组件树中提供的服务或令牌在覆盖层内部不可访问。
injector 选项允许你在创建模态框或弹出框时传递自定义的 Angular Injector。这使得覆盖层组件能够访问根注入器中不可用的服务和令牌。
使用场景
自定义注入器在以下场景中很有用:
- 从覆盖层内部访问路由作用域的服务
- 使用 Angular CDK 的
Dir指令实现双向文本支持 - 访问任何未在根级别注册的提供者