在Ionic 4/Angular 8中如何导入Boolean?及Tab1Page依赖注入错误解决
嘿,我来帮你搞定这两个问题:
1. 关于Boolean类型的导入问题
在Ionic 4/Angular 8环境中,Boolean是JavaScript自带的全局类型,完全不需要从任何模块导入,直接用就行。比如你可以这么定义变量:
// 用原生Boolean类型 isFirstWindowOpen: Boolean = false; // 或者更推荐用TypeScript的基本类型boolean(小写) isFirstWindowOpen: boolean = false;
两种写法都能正常工作,不过在TypeScript项目里,大家更习惯用小写的boolean来标注类型哦。
2. 解决Tab1Page参数无法解析的错误
你遇到的这个报错,问题出在把组件自己的状态属性当成了依赖注入的服务,放在构造函数里了。Angular构造函数的参数是用来注入依赖(比如MenuController这种服务)的,而isFirstWindowOpen这类布尔变量是组件自己的内部状态,根本不需要通过DI注入。
具体修正步骤:
- 调整tab1.page.ts的代码:把构造函数里的布尔变量移到组件类的属性区,直接初始化:
import { Component, OnInit } from "@angular/core"; import { MenuController } from '@ionic/angular'; @Component({ selector: "app-video-pravachan-list", templateUrl: "./video-pravachan-list.page.html", styleUrls: ["./video-pravachan-list.page.scss"], }) export class VideoPravachanListPage implements OnInit { // 将布尔变量作为组件属性直接定义并初始化 public isFirstWindowOpen: boolean = false; public isSecondWindowOpen: boolean = false; public isThirdWindowOpen: boolean = false; constructor( // 只保留需要注入的MenuController public menu: MenuController, ) {} ngOnInit() { // 这里放你的初始化逻辑 } // 其他组件方法... }
- 清理tab1.page.module.ts的冗余配置:删掉
providers里的{ provide: Boolean }, { provide: Array },这些配置完全没必要——原生类型根本不需要在DI容器里提供:
@NgModule({ imports: [ CommonModule, FormsModule, IonicModule, AudioListingPageRoutingModule, // 这里注意下:你的组件是VideoPravachanListPage,路由模块名可能应该对应改成VideoPravachanListPageRoutingModule,如果是复制笔误记得修正 ], declarations: [VideoPravachanListPage], // 之前你写的是AudioListingPage,这里要改成你的组件名哦 providers: [] // 清空不必要的提供者 }) export class VideoPravachanListPageModule {}
额外提醒:
你之前在模块里配置{ provide: Boolean }是完全错误的用法,Angular的依赖注入是用来提供可复用的服务、全局配置这类东西的,原生的布尔、数组这些类型根本不需要这么处理。把组件状态放进构造函数里,Angular会误以为你要注入某个依赖,找不到对应的提供者就会抛出你看到的“无法解析参数”错误啦。
内容的提问来源于stack exchange,提问作者Hiren More
相关产品推荐
相关产品推荐

