Angular 2 Change Detection and Zone are Different in Cordova Appのような問題が発生していますが、原因を特定できませんでした。PhoneGapビルド後の角2が "ゾーン内"でない
背景:私の会社のモバイルアプリは、7月からiOSとGoogle Playの両方の店舗にいます。 Angular 2、Webpack、PhoneGapを使用して構築されています。作業バージョンはAngular 2.0.0-beta.17を使用して作成されました.Angularを最新のリリースバージョンにアップグレードするチャンスがあります。私たちは2つの他の内部アプリケーション(Webのみ、モバイルに移植されていない)を書き直すプロセスを経て、かなりスムーズに進んだ。彼らは更新され、働いています。私たちは、他の2つのアプリを書き直した経験を使って、モバイルアプリを最後に取り組んだ。それはちょうど良いことだと思った。このアプリはブラウザでローカルに完璧に動作します。 CLIやデスクトップアプリケーションを使用して、PhoneGapをローカルで使用すると完全に正常に動作します。この問題は、PhoneGap Buildでビルドされたときに発生します(ビルドエラーはありません)。
私が見ているのは、最も簡単な変更検出が正しく機能していないことです。「ゾーン内」である必要があるタスクがゾーン外で実行されているため、変更検出をトリガしません。最も基本的な例を次に示します:
アプリのホームページにあるときに、「登録」または「サインイン」を選択できます。どちらか一方がそれぞれのページに移動するだけです。いずれかのページでは、我々はこのようにライフサイクルフックを使用している:私はしました
<div class="busyMask" [ngClass]="{busyOff: !isBusy}"></div>
:
ngAfterViewInit() {
this.isBusy = false;
}
this.isBusyたちはテンプレートで次のように使う部品のちょうどブール値であり、チェックして、ライフサイクルフックが正常に動作していて、this.isBusy
が設定されますが、ビューが更新されることはありません。
私は、すべてのCordovaプラグインを削除すること、アンジェラゾーンをハイジャック/変更することの1つでなければならないと考えていますが、プラグインなしでも結果は同じです:変化の検出なし。
PhoneGap Build(Cordova)でビルドされたアプリで問題を示すPlunkerを提供できないことは間違いないと思うので、他に何ができるのですか?これを理解するのを手伝ってくれるかもしれない、私より賢い人から。気にする人のため
詳細:
角度:2.4.7 PhoneGapのCLI:6.5.0
誰ですか?
あなたはngAfterViewInit' 'ゾーンを確認しましたか?私は角度が自分のコールバックが間違ったゾーンで実行されていることを疑う、別のバグのように見えます。 – kemsky
私はこれを 'ngAfterViewInit': ' console.log((ウィンドウ).Zone.current); ' に追加しました。なぜなら、非ngZoneゾーンのために適切な型付けをしていないからです。私はこの見ブラウザコンソールで : '_name: "角度" _parent:ゾーン _name: "長いスタックトレース"' PhoneGapのデバッグコンソールで、この: '_name: "ルート" _parent:null' –
rheomatic
@kemsky:上記の私の回答を見てください(私はあなたにタグを付けるのを忘れていました)。 – rheomatic