我正在尝试使用EventEmitter and Output将数据从我的home.ts文件发送到app.component.ts文件。但是每次我在应用程序中引用主页组件时.html都会收到这个看似随机的错误。当我从 home.ts 中的构造函数中删除导航控制器时,错误消失了。
首页:
import { Component, EventEmitter, Output } from '@angular/core';
import { NavController } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html',
})
export class HomePage {
message : any;
@Output() notify : EventEmitter<Object> = new EventEmitter<Object>();
constructor(public navCtrl: NavController) {
}
ionViewDidLoad(){
this.message = {"Name":"Sid", "Age":17};
this.notify.emit(this.message);
}
}
应用.html :
<ion-nav [root]="rootPage"></ion-nav>
<page-home (notify)="getChildData($event)"></page-home>
app.component.ts :
import { Component, ViewChild, ViewChildren } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { HomePage } from '../pages/home/home';
@Component({
templateUrl: 'app.html'
})
export class MyApp {
rootPage:any = HomePage;
constructor(platform: Platform, statusBar: StatusBar, splashScreen:
SplashScreen) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
});
}
getChildData(message){
console.log(message["Name"]);
console.log(message["Age"]);
}
}
如何修复此错误?我需要使用导航控制器,所以我无法删除它。我希望仍然能够将数据从子组件发送到父组件
错误指出您应该在提供程序部分中的某处提供 NavController。此部分可能位于应用程序的多个模块中,但常规模块是 app.module.ts 文件。
在那里,您有一个提供程序部分,您可以在其中为 Angular 依赖注入机制提供服务或提供程序以适当地工作。
所以我的第一个任务是在 app.module.ts 文件的提供程序部分添加 navController。这确保了 Angular 可以解析对 NavController 的依赖关系。将其放在 app.module.ts 文件中会使它在整个应用程序中具有与导航控制器相同的实例。
@NgModule({
bootstrap: [ AppComponent ],
declarations: [
...
],
imports: [
...
],
exports: [
],
providers: [
...
NavController
]
})
但是,由于您使用的是ionic,因此我将在以下URL上查看相关主题。
Ionic 2 - 运行时错误 没有 NavController 的提供程序