おそらく簡単なIonic2/Angular2の問題に苦しんでいますが、解決策がわかりません。
DataService というサービスで API 呼び出しからのデータを使用する Recipes というコンポーネントがあります。これはすべて良いです。
次に、レシピから起動されたモーダルに表示される別のコンポーネントがあります。このコンポーネントには、API クエリ (つまり、呼び出される URL) を変更するコントロールがあります。ユーザーがモーダルを閉じたときに、新しい URL で API を呼び出してレシピのデータを更新したいのですが、これを機能させる方法がわかりません。
以下は、レシピとモーダルのクラスを含む私のレシピ.tsと、DataServiceコードを含む私のdata.tsです。
Recipes.ts:
import {Page, Modal, ViewController, NavController, NavParams} from 'ionic-angular';
import {Inject, Injectable} from 'angular2/core';
import {DataService} from '../../service/data.ts';
import {Http, Headers, Request, RequestOptions, RequestMethod} from 'angular2/http';
import 'rxjs/add/operator/map';
@Page({
templateUrl: 'build/pages/recipes/recipes.html'
})
export class RecipesPage {
constructor(nav: NavController, dataService: DataService) {
this.nav = nav;
this.dataService = dataService;
this.results = [];
this.connectData();
}
// open filters modal
openFilters(filters) {
let modal = Modal.create(filterModal, this.filters);
this.nav.present(modal);
}
connectData() {
this.dataService.getData('initialQuery')
.subscribe(data => {
this.results = data;
console.log(this.results);
})
}
}
// modal logic
@Page({
templateUrl: 'build/pages/recipes/recipes-modal.html'
})
export class RecipesModal {
constructor(nav: NavController, params: NavParams, viewCtrl: ViewController, dataService: DataService) {
this.nav = nav;
this.dataService = dataService;
this.params = params;
this.viewCtrl = viewCtrl;
}
close() {
this.dataService.getData('nextQuery');
this.viewCtrl.dismiss();
// how do I update the data displayed by Recipes when this modal is closed?
}
}
data.ts:
import {Inject, Injectable} from 'angular2/core';
import {Http, Headers, Request, RequestOptions, RequestMethod} from 'angular2/http';
import 'rxjs/add/operator/map';
@Injectable()
export class DataService {
constructor(http: Http) {
this.http = http;
}
// function to
getData(keyword) {
let options = new RequestOptions({
method: RequestMethod.Get,
url: 'https://api/' + keyword,
});
let request = new Request(options);
return this.http.request(request)
.map(res => res.json());
}
}
ここで見逃したものを教えてください...