Ionicv2とAdobeCreativeSDKを使用して写真編集アプリを構築しています。クリエイティブSDKの実装に成功しました。
CSDKが編集されたファイルのURLを正常に返した後、ファイルのURLとともにセグメントを含むページをプッシュします。
問題は2ページ目にあり、セグメントをクリックしても切り替わりません。ページ内の入力をクリックした場合にのみ切り替わります。
CSDKなしで試してみましたが、問題なく動作します。
私のコード:
loadCamera(sourceType){
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.DATA_URL,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE,
sourceType: sourceType
}
this.camera.getPicture(options).then((imageData) => {
// imageData is either a base64 encoded string or a file URI
// If it's base64:
let base64Image = 'data:image/jpeg;base64,' + imageData;
var thisModule = this;
function success(newUrl) {
console.log("Success Editing!", newUrl);
thisModule.goToCreate(newUrl);
}
function error(error) {
console.log("Error!", error);
}
/* Optional `options` object. See API guide for usage. */
var options = {
outputType: CSDKImageEditor.OutputType.JPEG,
quality: 70
};
/* Launch the Image Editor */
CSDKImageEditor.edit(success, error, base64Image, options);
}, (err) => {
// Handle error
});
}
/* Push a new page along with url */
goToCreate(url){
this.nav.Push(SecondPage, {url: url});
}
}
2ページ目(セグメントコンポーネントを含む)
section: string;
url: string;
constructor(...) {
this.url = navParams.get('url');
console.log(this.url); //Working Perfectly
this.section = "segment1";
}
onSegmentChanged(segmentButton: SegmentButton) {
// console.log('Segment changed to', segmentButton.value);
}
onSegmentSelected(segmentButton: SegmentButton) {
// console.log('Segment selected', segmentButton.value);
}
2ページ目のHTML(セグメント2をクリックすると、セグメント1内の入力をクリックしない限りそこに移動しません)
<ion-content class="secondpage-content">
<ion-segment class="secondpage-segment" [(ngModel)]="section" (ionChange)="onSegmentChanged($event)">
<ion-segment-button value="segment1" (ionSelect)="onSegmentSelected($event)">
Segment 1
</ion-segment-button>
<ion-segment-button value="segment2" (ionSelect)="onSegmentSelected($event)">
Segment 2
</ion-segment-button>
<ion-segment-button value="segment3" (ionSelect)="onSegmentSelected($event)">
Segment 3
</ion-segment-button>
</ion-segment>
<div [ngSwitch]="section">
<div *ngSwitchCase="'segment1'" >
<ion-item>
<ion-label floating>Input</ion-label>
<ion-input type="text" formControlName="input_example"></ion-input>
</ion-item>
</div>
<div *ngSwitchCase="'segment2'" >
</div>
<div *ngSwitchCase="'segment3'" >
</div>
</div>
</ion-content>
さらに、コンソールログはエラーを返しません。何が起こっているのかについて何か考えがありますか?私はそれがCSDKに関連していると本当に思います。ありがとうございました
セグメントでも同じような問題が発生しました。私がそれに取り組んだ方法は次のとおりでした:
import { Component, ViewChild } from '@angular/core';
import { IonicPage, NavController, NavParams, Segment, ModalController } from 'ionic-angular';
section: string;
url: string;
@ViewChild(Segment)
private segment: Segment;
constructor(...) {
this.url = navParams.get('url');
console.log(this.url); //Working Perfectly
this.section = "segment1";
setTimeout(() => {
if (this.segment) {
this.segment.ngAfterContentInit();
this.segment._inputUpdated();
this.onSegmentChanged(null)
}
});
}
onSegmentChanged(segmentButton: SegmentButton) {
// console.log('Segment changed to', segmentButton.value);
}
onSegmentSelected(segmentButton: SegmentButton) {
// console.log('Segment selected', segmentButton.value);
}
ここでも同じ問題が発生しました。私は以前に他の仕事で同じ問題を抱えていませんが、何らかの理由でそれが起こっただけです。
this.segment.ngAfterContentInit();
どちらも助けにはなりません。
そして私は この解決策 私のために働くことを見つけました。
hTMLにイベントハンドルionChangeを追加します
<ion-segment [(ngModel)]="cat" (ionChange)=onSegmentChanged($event)>
モジュールChangeDetectorRefとイベントハンドラーをtsに追加します
import { ChangeDetectorRef } from '@angular/core';
...
export class xxxPage {
...
constructor(
private cf: ChangeDetectorRef,
...
}
...
onSegmentChanged(obj)
{
this.cf.detectChanges();
}
}