2017-01-17 14 views
2

こんにちは、誰も助けることができます。私はイオニックとアングルに慣れています。私はIonic 2で天気予報アプリケーションを作成しようとしています。 AddWeather()関数を呼び出すClickイベントでホームページを作成しました。 この関数は、フォームが添付されたモーダルを開きます。私はモーダルのフォームからホームページに画面上の出力を渡すことを試みています。私はngModelを試しましたが、正常に動作するようには見えません。 (home.ts)あなたのHTML内フォームを使用したモーダルのデータをホームページに転送するにはどうしたらいいですか?

import { Component } from '@angular/core'; 
import { NavController, ModalController, NavParams } from 'ionic-angular'; 
import { AddPage } from '../add/add'; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 

    public weatherList = []; 
    constructor(public navCtrl: NavController, public modalCtrl: ModalController) { 

} 

addWeather() { 
    let addWeatherModal = this.modalCtrl.create(AddPage); 


    addWeatherModal.present(); 
    } 
} 

(add.html) 

<ion-header> 
    <ion-navbar color="weatherbru"> 
    <ion-title>Modal</ion-title> 
    <ion-buttons end> 
     <button ion-button icon-only (click)="CloseModal()"><ion-icon name="close"></ion-icon></button> 
    </ion-buttons> 
    </ion-navbar> 
</ion-header> 

<ion-content padding> 
    <form> 
     <ion-item> 
      <ion-label stacked>City</ion-label> 
      <ion-input type="text" ></ion-input> 
     </ion-item> 
     <ion-item> 
      <ion-label stacked>Country</ion-label> 
      <ion-select > 
       <ion-option value="us">United States</ion-option> 
       <ion-option value="uk">United Kingdom</ion-option> 
      </ion-select> 
     </ion-item> 
     <button ion-button block (click)="CloseModal()">Add Weather</button> 
    </form> 
<div padding> 
</div> 
</ion-content> 

(add.ts) 

import { Component } from '@angular/core'; 
import { ModalController } from 'ionic-angular'; 
import { NavController, NavParams, ViewController } from 'ionic-angular'; 

@Component({ 
    selector: 'page-add', 
    templateUrl: 'add.html' 
}) 
export class AddPage { 

    constructor(public viewCtrl: ViewController, public navCtrl: NavController, public navParams: NavParams) {} 


CloseModal() { 

    this.viewCtrl.dismiss(); 
} 

} 
+1

この[リンク](http://stackoverflow.com/questions/41521251/ionic-2-get-data-back-from-modalをチェック/ 41521437#comment70250530_41521437) –

+0

ねえ、そこに感謝します。私はモデルを却下してデータを送信する必要があることを理解しています。私は問題を抱えているということでデータを渡すために、add.htmlのフォームを取得しています。 –

答えて

6

<form> 
     <ion-item> 
      <ion-label stacked>City</ion-label> 
      <ion-input [(ngModel)]="form.city" type="text" ></ion-input> 
     </ion-item> 
     <ion-item> 
      <ion-label stacked>Country</ion-label> 
      <ion-select [(ngModel)]="form.country"> 
       <ion-option value="us">United States</ion-option> 
       <ion-option value="uk">United Kingdom</ion-option> 
      </ion-select> 
     </ion-item> 
     <button ion-button block (click)="CloseModal()">Add Weather</button> 
    </form> 

あなたadd.tsファイルでここ

は私のコードです:

あなたのhome.tsで
export class AddPage { 
    form : any; //Declare the form object to be bound to your html 
    constructor(public viewCtrl: ViewController, public navCtrl: NavController, public navParams: NavParams) {} 

CloseModal() { 

    this.viewCtrl.dismiss(this.form); //Send back the form object when closeModal is called 
} 
} 

addWeather() { 
    let addWeatherModal = this.modalCtrl.create(AddPage); 

    addWeatherModal.present(); 
    addWeatherModal.onDidDismiss(data=>{ //This is a listener which wil get the data passed from modal when the modal's view controller is dismissed 
     console.log("Data =>", data) //This will log the form entered by user in add modal. 
    }) 
    } 
+0

こんにちは、ありがとう。これは実際に私が最初に試したものですが、私はランタイムエラーを取得します。 ./AddPageクラスでエラーが発生しました。AddPage - 原因が未定義のプロパティ '' city 'を読み取ることができません –

+0

次に、コンストラクタでthis.form = {city: ""、country: "}}のようなフォーム変数を初期化します。それはそれを解決します –

+1

こんにちは私はそれを考え出した。 ngModel - >を呼び出すときに名前フィールドを追加する必要がありました>また、このような形式でデフォルト値を渡しました。フォーム= { 国名: 'us' }; –

関連する問題