問題タブ [ng-upgrade]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - @angular\upgrade\static Angular V2.2.1 から UpgradeModule をインポートできません
現在、AngularJS (ng1) アプリを Angular 2 (ng2) にアップグレードしています。
Angular バージョン 2.2.1 を使用しています。
@angular\upgrade\static から UpgradeModule をインポートすると、次の例外が発生します。
Uncaught SyntaxError: Unexpected reserved word
Uncaught ReferenceError: webpackJsnop is not defined
WebPack V1.13.1 を使用しています。
upgrade_adapter の方法を使用しているときは、@Inject アノテーションを追加する必要があります。
助けてくれてありがとう。
angularjs - forwardRef が別々のファイルにある場合に ng2 モジュールを識別しない
angular2 へのアップグレード戦略として ng-upgrade を使用しようとしましたが、成功は限られていました。angular2 アプリを正常に追加し、そのコンポーネントをダウングレードしましたが、実装はあまり柔軟ではありません。
というエラーが表示されます
ReferenceError: MainModule が定義されていません
UpgradeAdapter は、angular2 モジュール宣言と同じファイルでインスタンス化する必要があるようです。これは、独立したダウングレードで複数の個別のモジュールを導入するときに問題になります。
私の質問は... UpgradeAdapterを利用する正しい方法ですか?もしそうなら、アダプター定義とモジュール定義を別々のファイルに分ける方法はありますか?
問題を示すplnkr: https://embed.plnkr.co/ZPw9BVBVSZjYbfzkAkpl/
angularjs - angular1 ui-routerを介したナビゲーションの後、ng2コンポーネントで変更検出が正しく機能しない
大きな ng1 (V1.5.9) アプリ (ui-router を使用) 内でいくつかの新しい ng2 (V2.2.4) コンポーネントを使用するために ng-upgrade を使用するアプリケーションでは、現在、非常に奇妙な変更検出の問題が発生しています。私が知る限り、これは ng2 のアップグレードで導入されましたが、残念ながら現在は簡単に確認できません。
私はこのコンポーネントを持っているだけの最小限の例に減らしました:
そのコンポーネントは upgrade-adapter でアップグレードされ、モジュールの entry-component として登録されます。
コンポーネントは、次のように ng1 コントローラーのテンプレートで使用されます。
ブラウザーを開いてそのページ (ng1 コントローラーのルート) に直接移動すると、すべてが期待どおりに機能します。UI は true/false を 2 秒ごとに交互に表示します。
ただし、移動してからページに戻ると(いくつかの異なるルートにアクセスすると)、突然変更検出が機能しないようです。表示される値は約 5 ~ 6 秒ごとに交互に変化し、非常にランダムに見えますが、コンソールにはまだ期待値が表示されています。
コンポーネントのコンストラクターを次のように変更すると:
突然再び機能します。
実際のアプリで見られる動作ははるかに複雑であるため、明らかにこれは実行可能な解決策ではありません (zone.run
おそらく数十の場所に追加する必要があり、これは維持できません)。
これを何時間もデバッグしましたが、何が起こっているのかわかりません。Chrome の JavaScript プロファイラーでは、基本的に、何も起こらない 5 ~ 6 秒間、ページがほぼずっとアイドル状態になっていることがわかります。
これはそのデモ コンポーネントのスクリーンショットではありませんが (ただし、基本的には同じように見えます)、最初にテストしていたタブ コンポーネントのプロファイリングからのものです (タブの切り替えにかかった時間はその間に何も表示されません)。
アップデート:
もう少し実験した後、私が非常に驚くべきことを見つけたのは、ステータス変更コードを呼び出しに入れる代わりに、へのzone.run
呼び出しを追加することApplicationRef.tick()
です (たとえば、ここで説明したように: https://stackoverflow.com/a/34829089/ 1335619 ) また、まったく機能しません。完全なアプリケーション変更検出を強制しても何も起こらない理由はわかりませんが、ゾーン実行呼び出しは何とか機能します。
動作しない tick 呼び出しのコード例:
angularjs - NgUpgrade: Angular1 コンポーネントのアップグレード時に templateUrl を使用できません
ng2 コンポーネント内で使用される ng1 コンポーネントをアップグレードしたいと考えています。
テンプレート文字列だけを使用して ng1 コンポーネントをアップグレードすると、機能します。ただし、代わりに templateUrl の使用に切り替えると、アプリがクラッシュし、次のエラーが表示されます。
ここに私の問題を示すプランクがあります:
https://plnkr.co/edit/2fXvfc?p=info
Angular 1 -> 2 アップグレード ガイドに従っていますが、このコードは機能するはずです。なぜ機能しないのかよくわかりません。