Ionic 2 Modal 未显示
Ionic 2 Modal not showing
我按照 Ionic2 modals 上给出的示例进行操作,没有收到任何错误,但是当我单击应启动模态的卡片时,没有任何反应。
这是模态本身的代码:
@Component ({
template: `
<ion-card class='popover'>
<ion-card-content>
Hello
</ion-card-content>
</ion-card>
`
})
export class AccModal {
dumbData: number;
constructor() {
console.log("constructor");
this.dumbData= 22;
}
}
将显示我的模式的页面如下所示:
<ion-card (click)='presentModal()' class='custom-card'>
<ion-card-header>
Sched. Accuracy
</ion-card-header>
<ion-card-content>
71%
</ion-card-content>
</ion-card>
打字稿是这样的:
presentModal() {
let myModal = Modal.create(AccModal, {param: "something"});
console.log('myModal is ', myModal);
this.nav.present(myModal);
console.log("function being called");
}
presentModal
中的 console.log
正在注册,但模态构造函数中的 console.log
未注册。我不知道该怎么做,因为我不能 100% 确定发生了什么?
更新
当我调试 nav.present(导航控制器功能)时,我看到的是:
if (rootNav['_tabs']) {
// TODO: must have until this goes in
// https://github.com/angular/angular/issues/5481
void 0;
return;
}
我的项目中确实有选项卡,因此该语句的计算结果为 true 并且当前函数有效 returns 我是 0 并称其为好。在我的 package.json 中,我的离子版本是:"ionic-angular": "^2.0.0-beta.8",
"ionic-native": "^1.1.0"
希望这些添加的信息有助于诊断比我更聪明的人。
更新 2:
我已经更新到最新的 ionic 2 版本 2.0.0-beta.9。但是,当我在 chrome 控制台中调试时,我仍然在 ionic-angular 代码的 nav.present 函数中看到上面的代码,即使当我在自己的代码中查看它时,我也是如此看到这个:
if (rootNav['_tabs']) {
// TODO: must have until this goes in
// https://github.com/angular/angular/issues/5481
console.error('A parent <ion-nav> is required for ActionSheet/Alert/Modal/Loading');
return;
}
我已经清除了缓存并重新加载了页面,但仍然显示旧代码。我一定是疯了。对此的任何见解都将是惊人的。
更新 3
这是我的选项卡的代码。 app.html 中的 live 和 index 变量只是在右侧选项卡上启动应用程序的一种方式。它以 1(或第二个选项卡)开头:
<ion-tabs greenTheme [selectedIndex]="index">
<ion-tab tabIcon="people" #content tabTitle="My Roster" [root]="tab2"></ion-tab>
<ion-tab tabIcon="stats" #content tabTitle="Wage Overview" [root]="tab1"></ion-tab>
</ion-tabs>
像这样在构造函数中导入 NavController:
constructor(private navController: NavController) {
// Whatever goes here
}
你的方法调用this.navController.present(myModal);
我对处理选项卡的代码一无所知,但我使用此 post 中的代码创建了一个 Plunker(以及一个很小的更改),并且模态显示正确。
我所做的更改是在模态代码中:
// Add NavParams to use it later in the modal's constructor
import { ..., NavParams } from 'ionic-angular';
@Component ({
template: `
<ion-card class='popover'>
<ion-card-content>
Hello
</ion-card-content>
</ion-card>
`
})
export class AccModal {
private dumbData: number;
// I've added the params variable, because you're calling this constructor
// with a parameter (called 'param' and with the 'something' value)
constructor(private params: NavParams) {
console.log("constructor");
this.dumbData= 22;
// You can see in the console the parameter being printed properly
console.log('Param:', params.get('param'));
}
}
您可以尝试 this plunker (Ionic2 beta.9)。
====================================
更新:
我更新了 plunker 以包含 tab
布局,它按预期工作。
The live in the app.html...
我试图让它工作,包括 app.html
中的选项卡,但无法做到。因此,我在仅包含两个选项卡的 home page
中添加了选项卡,而在 app.ts
中我只是设置了 this.rootPage = HomePage;
以便这是应用程序的第一页。您可以尝试在您的应用程序中执行此操作,看看在 app
页面中包含选项卡是否可以解决问题?
在 ionic 2 beta 11 中,更新解决了这个问题。我的代码与示例 here on ionic's site 的唯一区别是我的模态模板。超级简单,直接了解如何完成。
我按照 Ionic2 modals 上给出的示例进行操作,没有收到任何错误,但是当我单击应启动模态的卡片时,没有任何反应。
这是模态本身的代码:
@Component ({
template: `
<ion-card class='popover'>
<ion-card-content>
Hello
</ion-card-content>
</ion-card>
`
})
export class AccModal {
dumbData: number;
constructor() {
console.log("constructor");
this.dumbData= 22;
}
}
将显示我的模式的页面如下所示:
<ion-card (click)='presentModal()' class='custom-card'>
<ion-card-header>
Sched. Accuracy
</ion-card-header>
<ion-card-content>
71%
</ion-card-content>
</ion-card>
打字稿是这样的:
presentModal() {
let myModal = Modal.create(AccModal, {param: "something"});
console.log('myModal is ', myModal);
this.nav.present(myModal);
console.log("function being called");
}
presentModal
中的 console.log
正在注册,但模态构造函数中的 console.log
未注册。我不知道该怎么做,因为我不能 100% 确定发生了什么?
更新
当我调试 nav.present(导航控制器功能)时,我看到的是:
if (rootNav['_tabs']) {
// TODO: must have until this goes in
// https://github.com/angular/angular/issues/5481
void 0;
return;
}
我的项目中确实有选项卡,因此该语句的计算结果为 true 并且当前函数有效 returns 我是 0 并称其为好。在我的 package.json 中,我的离子版本是:"ionic-angular": "^2.0.0-beta.8",
"ionic-native": "^1.1.0"
希望这些添加的信息有助于诊断比我更聪明的人。
更新 2:
我已经更新到最新的 ionic 2 版本 2.0.0-beta.9。但是,当我在 chrome 控制台中调试时,我仍然在 ionic-angular 代码的 nav.present 函数中看到上面的代码,即使当我在自己的代码中查看它时,我也是如此看到这个:
if (rootNav['_tabs']) {
// TODO: must have until this goes in
// https://github.com/angular/angular/issues/5481
console.error('A parent <ion-nav> is required for ActionSheet/Alert/Modal/Loading');
return;
}
我已经清除了缓存并重新加载了页面,但仍然显示旧代码。我一定是疯了。对此的任何见解都将是惊人的。
更新 3
这是我的选项卡的代码。 app.html 中的 live 和 index 变量只是在右侧选项卡上启动应用程序的一种方式。它以 1(或第二个选项卡)开头:
<ion-tabs greenTheme [selectedIndex]="index">
<ion-tab tabIcon="people" #content tabTitle="My Roster" [root]="tab2"></ion-tab>
<ion-tab tabIcon="stats" #content tabTitle="Wage Overview" [root]="tab1"></ion-tab>
</ion-tabs>
像这样在构造函数中导入 NavController:
constructor(private navController: NavController) {
// Whatever goes here
}
你的方法调用this.navController.present(myModal);
我对处理选项卡的代码一无所知,但我使用此 post 中的代码创建了一个 Plunker(以及一个很小的更改),并且模态显示正确。
我所做的更改是在模态代码中:
// Add NavParams to use it later in the modal's constructor
import { ..., NavParams } from 'ionic-angular';
@Component ({
template: `
<ion-card class='popover'>
<ion-card-content>
Hello
</ion-card-content>
</ion-card>
`
})
export class AccModal {
private dumbData: number;
// I've added the params variable, because you're calling this constructor
// with a parameter (called 'param' and with the 'something' value)
constructor(private params: NavParams) {
console.log("constructor");
this.dumbData= 22;
// You can see in the console the parameter being printed properly
console.log('Param:', params.get('param'));
}
}
您可以尝试 this plunker (Ionic2 beta.9)。
====================================
更新:
我更新了 plunker 以包含 tab
布局,它按预期工作。
The live in the app.html...
我试图让它工作,包括 app.html
中的选项卡,但无法做到。因此,我在仅包含两个选项卡的 home page
中添加了选项卡,而在 app.ts
中我只是设置了 this.rootPage = HomePage;
以便这是应用程序的第一页。您可以尝试在您的应用程序中执行此操作,看看在 app
页面中包含选项卡是否可以解决问题?
在 ionic 2 beta 11 中,更新解决了这个问题。我的代码与示例 here on ionic's site 的唯一区别是我的模态模板。超级简单,直接了解如何完成。