2017-09-25 13 views
1

他のページ(otherpage.ts)やその他のコンポーネントから、変数またはアクセス方法app.component.tsにアクセスして変更したいです。あなたはいくつかの方法でこれを行うことができますIonicの他のページからapp.component変数とメソッドにアクセスするにはどうすればよいですか?

app.component.ts

@Component({ 
    templateUrl: 'app.html' 
}) 
export class MyApp { 

    accessedVariable: any; 

    constructor(){ } 

    accessedMethod() { 
    ..something 
    } 

} 

otherpage.ts

@Component({ 
    selector: 'page-other', 
    templateUrl: './otherpage.html', 
}) 
export class OtherPage { 

    constructor() { } 
} 
+0

が '' MyApp'の子をOtherPage'ていますか? – bazzells

+0

@ Dr.Geekは、あなたがとりあえず試みていることを簡単に説明できますか?また、app.componentとotherpageの親が互いに関連しているか、完全に別のものになっています – Mehdi

+0

多分この[answer](https://stackoverflow.com/a/44753236/4254681)が役に立ちます。子ページのメニューコンテンツを変更したいだけの場合は、[service](https://www.tutorialspoint.com/angular2/angular2_services.htm)を使用してください。 – Duannx

答えて

0

Eventsを使用しています。

イベントは、アプリ全体のアプリケーションレベルのイベントに応答し、 を送信するためのパブリッシュ/サブスクライブスタイルのイベントシステムです。

もう一つの方法は、ケースを使用provider .Onを使用することができる、あなたはproviderを通して、あなたのmethodsvariablesを共有することができます。

はと最初にそれをインストールします:

+0

私は欲しくないです。 app.component.tsにアクセスしたいのですが、子ページやその他のページから変更したい変数などがあることを意味します。例えば、 ''のように、子ページの変更中にイオンコンテンツメニューを変更することは可能ですか? –

+0

'1st'メソッドで述べたように' Events'を使って行うことができます。なぜあなたはその方法を使用できないのですか?これは、ここでのユースケースに応じて唯一のオプションです。 – Sampath

+0

プロジェクトが最初に読み込まれると、app.ccomponent(メニュー項目も)が読み込まれ、プロジェクトページで変更が発生した後、既存のapp.component.tsのパラメータを変更できませんでした。 –

0

最速の方法は、GlobalVarsプロバイダを使用することです

ionic g provider globalvars 

これは自動的にあなたのapp.module.tsファイルに新しいプロバイダを追加します

import {Injectable} from '@angular/core'; 
@Injectable() 
export class GlobalVars { 
myGlobalVar: any; 
constructor() { 
this.myGlobalVar = ""; 
} 

setMyGlobalVar(value) { 
this.myGlobalVar = value; 
} 

getMyGlobalVar() { 
return this.myGlobalVar; 
} 
} 

ここに定義しますgettersetterのメソッドと、このクラスのインスタンスを通じて必要な変数にアクセスできます。 YourOtherPage.tsで変数を取得するには、this.glVars.getMyGlobalVar()などがあります。ここ

あなたはそれについての詳細を読むことができます:https://ionicallyspeaking.com/2016/03/10/global-variables-in-ionic-2/

+0

それは私が欲しいものではありません。私はapp.component.tsにアクセスしたいです! –

+0

私はそれも試したことを知っていますが、ページはイオン/角でカプセル化されています。代わりに、jqueryとindex.htmlを使用してページ全体をトリガーすることもできます。私は自分のメディアデータベース – Rebar

関連する問題