0
タブレイアウトの各タブは、特定のクライアントの属性(プロファイル、財務など)のさまざまな側面に関連するアプリがあります。クライアントに変更が発生すると、親コンポーネントがそれを検出できるようにしたいと思います。Ionic 2:タブコンポーネントの変更を検出する
データをタブに渡す唯一の入力は[rootParams]="foo"
ですが、親のfoo
の変更を検出する方法はわかりません。
ngOnChanges()
foo
への更新がある場合は起動しないようです。 Observables
を実装する方法がわからないと思う。
これまで私がこれまで持っていたことは次のとおりです。私たちは、タブのコンポーネントに移動したインデックスからクライアントを選択した後:
タブコンポーネント(ClientGenericPage)
@Component({
templateUrl: 'client-generic.html'
})
export class ClientGenericPage {
client:any;
constructor(
public navParams: NavParams) {
this.client = navParams.get('client');
this.clientParams = {
client: this.client
}
}
<ion-tabs class="tabs-basic">
<ion-tab tabTitle="Profile" [root]="profilePage" tabIcon="user-o" [rootParams]="clientParams" #profile></ion-tab>
<ion-tab tabTitle="Weigh Ins" [root]="weighinsPage" tabIcon="scale-bathroom" [rootParams]="clientParams" #weighins></ion-tab>
<ion-tab tabTitle="Finance" [root]="financePage" [tabBadge]="alerts.financial" tabBadgeStyle="danger" tabIcon="attach-money" [rootParams]="clientParams" #finance></ion-tab>
<ion-tab tabTitle="Images" [root]="imagePage" [tabBadge]="alerts.images" tabBadgeStyle="danger" tabIcon="fa-image" [rootParams]="clientParams" #images></ion-tab>
</ion-tabs>
私は、子のタブで更新を行います。たとえば、最初のタブProfilePage
にあります。
export class ClientDetailsPage {
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private filterObject: FilterObject,
public http: Http,
public modalController: ModalController,
private clientService: ClientService,
private app: App
) {
this.client = navParams.get('client');
// Example function where I make an update to client
updateForm(fab) {
this.clientService.update(this.client, "client", this.token)
.subscribe(
data => {
this.client = data
this.clientService.handleResponse("Successfully updated the client!")
},
err => this.clientService.handleResponse("Ut oh.. couldn't update the client!"),
() => fab.close()
)
}
どのように私は他のタブも同様に更新されるように、クライアントは、変更されたことを親に警告しますか?
は、あなたが探しているようですあなたのターゲットページで、次のように発表されたイベント 'Output' @この
のようなイベントを発生し、購読することができますか? https://angular.io/docs/ts/latest/cookbook/component-communication.html – Alex
つまり、変更が発生したときにいつでもイベントを発行することができますか?私は基本的には何もしていません。あなたはコードを提示していないので、コメントだけを書いています。それはとても反復的です。私は親が実際にタブコンポーネントではないので、イベントを聞く場所さえも確信していません。 –
*私はfoo *の変更を検出する方法を知らない。だから私は与えることができないより良い答えです。しかし、私が与えたリンクはあなたの(他の)オプションをとてもよく表しています。 sidenoteとして、出力を使用して、変更をいつ放出するかを決定することもできます。 – Alex