2016-04-13 7 views
0

私は私の最初のイオン2アプリはちょうどチュートリアルをやって問題を抱えているイオンの公式ブログを形成し、ちょうどいけない、これは私のために働く、これが私のhome.tsイオン2ナビゲーション・ページはいけない仕事

import {Page} from 'ionic-angular'; 
import {AboutPage} from '../about/about'; 

@Page({ 
    templateUrl: 'build/pages/home/home.html' 
}) 
export class HomePage { 
    aboutPage = AboutPage; 

    constructor() { 
    this.name = "Bartek"; 
    } 
} 

とこれです私のhome.htmlであり、これはちょうど次のページに私をナビゲートする必要があります

<ion-navbar *navbar> 


<ion-title> 
    Hello World 
    </ion-title> 
</ion-navbar> 

<ion-content class="home"> 
    <ion-card> 
    <ion-card-header> 
     Card Header 
    </ion-card-header> 
    <ion-card-content> 
     Hello 
     <button [navPush]="aboutPage">Go To About</button> 
    </ion-card-content> 
    </ion-card> 
</ion-content> 

が、私はCLIで「イオン・サーブ」を実行すると、これは私に

ionic $ TypeScript error: 

/home/bartomiej/Programowanie/Nauka/Ionic/helloWordl/app/pages/home/home.ts(2,25): Error TS2307: Cannot find module '../about/about'. 
TypeScript error: /home/bartomiej/Programowanie/Nauka/Ionic/helloWordl/app/pages/home/home.ts(11,8): Error TS2339: Property 'name' does not exist on type 'HomePage'. 
[20:41:16] Starting 'html'... 
[20:41:17] Finished 'html' after 770 ms 

/home/bartomiej/Programowanie/Nauka/Ionic/helloWordl/app/pages/about/about.js:1 
import {Page, NavController} from 'ionic-angular'; 
^ 
ParseError: 'import' and 'export' may appear only with 'sourceType: module' 
HTML changed: www/build/pages/about/about.html 
HTML changed: www/build/pages/home/home.html 
をそのエラーを与えます

誰かが間違っていると思っています。私はちょうど公式ブログの指示に従います。

+0

あなたは別途書いたabout.tsを持っていますか? エラーでこの行が表示されます /helloWordl/app/pages/about/about.js なぜ、同じプロジェクトでtypescriptとes6を使用するのですか? –

+0

これは多くの文書ではありませんが、コンストラクタの前にプロパティ 'name'を宣言する必要があります。それ以外の場合は' this.name = "string" 'がエラーをスローします。だからあなたは 'aboutPage = AboutPage'を持っていますが、コンストラクタでそれを設定する前に' name:string'を文字列変数として宣言するようにしてください。 –

+0

これはエラーが発生する可能性があるため、 '[navPush]'ページ遷移は効果を発揮する –

答えて

2

[navPush]を使用する代わりにナビゲーションを行い、ボタン上で関数を呼び出すクラスで関数を作成します。また、コンストラクタ内にNavControllerを挿入する必要があります。例:

constructor(private nav: NavController){ 
} 

navigateAbout(){ 
    this.nav.push(AboutPage); 
} 

だけでやるのHTMLよりも<button (click)="navigateAbout"></button> 私はこれがより良いアプローチだと思う、プラスあなたはまだしたい場合は、代わりにHTML

でそれを持つのクラスで全体のロジックが表示されますあなたのアプローチをして、コンストラクタでNavControllerを使用してみてください。おそらく助けになります

0

あなたの変数はグローバルスペースにあります。ブロックスコープには "let"キーワードを使用します。 コンストラクタのbodyに "aboutPage"変数を配置すると、this.aboutPageのようになります。

0

これは、コンストラクタ内でNavControllerを呼び出す必要があるためです。 これは問題を解決するはずです。

import {Page} from 'ionic-angular'; 
import {AboutPage} from '../about/about'; 

@Page({ 
    templateUrl: 'build/pages/home/home.html' 
}) 
export class HomePage { 
    aboutPage = AboutPage; 

    constructor(public navCtrl: NavController) { 
    this.navCtrl; 
    this.name = "Bartek"; 
    } 
} 
関連する問題