在 Ionic 2 中,如何在两个组件之间传递属性数据?
In Ionic 2, how to pass attribute data between two components?
我有一个具有 title
属性的 CheckIn
页面。
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
@Component({
templateUrl: 'check-in.html'
})
export class CheckInPage {
public title: string = 'Check In';
constructor(public navCtrl: NavController) {
}
}
我将此页面导入我的 TabsPage
:
import { Component } from '@angular/core';
import { CheckInPage } from '../check-in/check-in';
@Component({
templateUrl: 'tabs.html',
})
export class TabsPage {
public tab3Root: any;
constructor() {
this.tab3Root = CheckInPage;
}
}
现在,我想在我的 TabsPage 视图中使用它:
<ion-tabs>
<ion-tab [root]="tab3Root" tabTitle="{{tab3Root.title}}" tabIcon="cog"></ion-tab>
</ion-tabs>
当我 console.log
它时,这给了我 undefined
。请协助。
尝试将页面分配给构造函数之外的每个选项卡。
https://ionicframework.com/docs/v2/api/components/tabs/Tab/
html
<ion-tabs>
<ion-tab [root]="chatRoot" tabTitle="Chat" tabIcon="chat"><ion-tab>
</ion-tabs>
js/ts
import { ChatPage } from '../chat/chat';
@Component({
templateUrl: 'build/pages/tabs/tabs.html'
})
export class Tabs {
// here we'll set the property of chatRoot to
// the imported class of ChatPage
chatRoot = ChatPage;
constructor() {
}
}
你可以试一试。
在 Ionic 中的页面之间传递数据有几种不同的方法,本视频对此进行了介绍:https://www.youtube.com/watch?v=T5iGAAypGBA
为简洁起见,我在这里只介绍其中一种方法:如果您想在多个页面之间保留某些内容,您可以通过 Ionic 2 Provider 来实现。
您可以在 CLI 中生成提供程序:
ionic g provider DemoProvider
它将生成一个提供程序,您可以向其中添加变量,如下所示:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
/*
Generated class for the DemoProvider provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class DemoProvider {
mySharedVariable: String = "Hello";
constructor() {
}
}
在要使用提供程序的组件中,确保导入它,并将其注入到构造函数中:
import { Component } from '@angular/core';
import { DemoProvider } from '../../providers/demoProvider';
@Component({
selector: 'page-tabs',
templateUrl: 'tabs.html'
})
export class TabsPage {
constructor(public demoProvider:DemoProvider) {
}
ionViewWillEnter(){
console.log(demoProvider.mySharedVariable);
}
}
希望对您有所帮助!
我有一个具有 title
属性的 CheckIn
页面。
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
@Component({
templateUrl: 'check-in.html'
})
export class CheckInPage {
public title: string = 'Check In';
constructor(public navCtrl: NavController) {
}
}
我将此页面导入我的 TabsPage
:
import { Component } from '@angular/core';
import { CheckInPage } from '../check-in/check-in';
@Component({
templateUrl: 'tabs.html',
})
export class TabsPage {
public tab3Root: any;
constructor() {
this.tab3Root = CheckInPage;
}
}
现在,我想在我的 TabsPage 视图中使用它:
<ion-tabs>
<ion-tab [root]="tab3Root" tabTitle="{{tab3Root.title}}" tabIcon="cog"></ion-tab>
</ion-tabs>
当我 console.log
它时,这给了我 undefined
。请协助。
尝试将页面分配给构造函数之外的每个选项卡。 https://ionicframework.com/docs/v2/api/components/tabs/Tab/
html
<ion-tabs>
<ion-tab [root]="chatRoot" tabTitle="Chat" tabIcon="chat"><ion-tab>
</ion-tabs>
js/ts
import { ChatPage } from '../chat/chat';
@Component({
templateUrl: 'build/pages/tabs/tabs.html'
})
export class Tabs {
// here we'll set the property of chatRoot to
// the imported class of ChatPage
chatRoot = ChatPage;
constructor() {
}
}
你可以试一试。
在 Ionic 中的页面之间传递数据有几种不同的方法,本视频对此进行了介绍:https://www.youtube.com/watch?v=T5iGAAypGBA
为简洁起见,我在这里只介绍其中一种方法:如果您想在多个页面之间保留某些内容,您可以通过 Ionic 2 Provider 来实现。
您可以在 CLI 中生成提供程序:
ionic g provider DemoProvider
它将生成一个提供程序,您可以向其中添加变量,如下所示:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
/*
Generated class for the DemoProvider provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class DemoProvider {
mySharedVariable: String = "Hello";
constructor() {
}
}
在要使用提供程序的组件中,确保导入它,并将其注入到构造函数中:
import { Component } from '@angular/core';
import { DemoProvider } from '../../providers/demoProvider';
@Component({
selector: 'page-tabs',
templateUrl: 'tabs.html'
})
export class TabsPage {
constructor(public demoProvider:DemoProvider) {
}
ionViewWillEnter(){
console.log(demoProvider.mySharedVariable);
}
}
希望对您有所帮助!