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 的提供者的主要内容,如果未能解决你的问题,请参考以下文章