Ionic - 如何正确导入 ViewController? - 未捕获(承诺):错误:没有 ViewController 的提供者
Posted
技术标签:
【中文标题】Ionic - 如何正确导入 ViewController? - 未捕获(承诺):错误:没有 ViewController 的提供者【英文标题】:Ionic - How to import ViewController properly? - Uncaught (in promise): Error: No provider for ViewController 【发布时间】:2018-04-03 02:05:09 【问题描述】:我有一个Popover,我希望我的应用根据所选项目的行为有所不同。 为了实现这一点,我遵循了Ionic Doc。
Error: Uncaught (in promise): Error: No provider for ViewController!
所以如果我将 ViewController 添加到 app.module.ts
我会收到以下错误:
Uncaught Error: Can't resolve all parameters for ViewController: (?, ?, ?)
问题:如何正确导入ViewController?
popover 组件:
import Component from '@angular/core';
import ViewController from 'ionic-angular';
@Component(
selector: 'popover',
templateUrl: 'popover.html'
)
export class PopoverComponent
popoverItemList = [name: 'Event erstellen', name: 'Event Übersicht'];
selectedTitle: string;
constructor(private viewCtrl: ViewController)
this.selectedTitle = "";
setSelectedTitle(selectedItem)
this.selectedTitle = selectedItem;
this.viewCtrl.dismiss(this.selectedTitle);
我这样称呼弹出框:
presentPopover(ev)
let popover = this.popoverCtrl.create(PopoverComponent,
);
popover.present(
ev: ev
);
popover.onDidDismiss((popoverData) =>
if(popoverData === 'Event erstellen')
this.navCtrl.push(CreateEventPage,
);
else if(popoverData === 'Event Übersicht')
this.navCtrl.push(EventlistPage,
);
)
【问题讨论】:
你需要在stackblitz.com上模拟一下 你在使用延迟加载吗?PopoverComponent
声明了哪个模块?
您是否在您的app.module
中导入了IonicModule
?
【参考方案1】:
import Component from '@angular/core';
import ViewController from 'ionic-angular';
@Component(
selector: 'popover',
templateUrl: 'popover.html',
providers : [ViewController] //add this line
)
export class PopoverComponent
popoverItemList = [name: 'Event erstellen', name: 'Event Übersicht'];
selectedTitle: string;
constructor(private viewCtrl: ViewController)
this.selectedTitle = "";
setSelectedTitle(selectedItem)
this.selectedTitle = selectedItem;
this.viewCtrl.dismiss(this.selectedTitle);
【讨论】:
不可能!!把它放在 app.module.ts 中。不是每个组件的提供者 即使你做了这个糟糕的解决方法..它如何避免Uncaught Error: Can't resolve all parameters for ViewController: (?, ?, ?)
?【参考方案2】:
从 '@angular/core' 导入 ViewChild ; 从 'ionic-angular' 导入 ViewController ;
不是在Construct中声明,而是在@ViewChild(ViewController)视图中声明:ViewController;
【讨论】:
以上是关于Ionic - 如何正确导入 ViewController? - 未捕获(承诺):错误:没有 ViewController 的提供者的主要内容,如果未能解决你的问题,请参考以下文章
在 ionic 2 中使用或导入外部 javascript 文件
如何修复 Ionic 中的“没有导出的成员 'VeiwChild'”错误
使用“导入”将 Faye 客户端包含在 Ionic 2 项目中
如何将标头添加到 ionic 4 / Apollo GraphQL App
将 Ionic Native / Cordova 插件与 Ionic (React) & Capacitor 一起使用的正确方法是啥?