システムは角度4にシステムを変換しています。変換には時間がかかるので、コンポーネントを1つずつ角度に変換して角度の折り返しを入れたいと考えていました私たちの古いページは、新しい角型コンポーネントと組み合わせて実行されます。現在のシステムでは、複数のフレーム、ヘッダー、ナビゲーション、ワーキングエリアで実行されます。私たちは新しい角度システムでフレームを取り除いています。古いシステムと新しい角度4のフロントエンドとのインタフェース
私たちの古いシステムは、主に作業領域の内容を、サーバー上で完全に構成された新しいhtmlページに置き換えています。
私はcomponent.htmlからiframeを起動し、そのフレーム上の何かにonClickをキャッチするリスナーをアタッチするコードを見てきました。古いシステムからのそれらのクリックアクションを評価し、href(etc ..)が新しい角度ルータにそれを使用したり再ルーティングしたりすることを許可するかどうかを決定したいと思っています(this.router.navigate([/customer '])))、要求されたイベントを停止します。私はこの機能のほとんどを動作させることができますが、新しい関数が実行されるときにコンポーネントの必要な部分にアクセスすることができない場合、メソッドとプロパティは見つかりません。 (st.replace()、str.match()など)は、regexpと組み合わせて使用される通常のjavascriptメソッドですが、router.navigateなどのコンポーネントに含まれるプロパティも含まれます。
これは実行できますか?これを達成するより良い方法は?
私は同じ状況に踏み込んだalt-angularjs-migration-using-iframes-demoも見てきました。ここで
私は現在、これを行うにしようとしています方法です:
contact.component.html
<div class="iBody1" (click)="onRightClick($event)">
<iframe #iframe [src]="'https://www.volgistics.com/ex/Cp.dll?ACT=7' +
urlUserStr | safeUrl" (load)="myFunction()"
id="work1" name="WorkArea" scrolling="no" marginwidth="0" marginheight="0"
frameborder="no" >
<p>Your browser does not support iframes.</p>
</iframe>
</div>
contact.component.ts
myFunction() {
let doc = this.iframe.nativeElement.contentDocument ||this.iframe.nativeElement.contentWindow;
if (typeof doc.addEventListener !== undefined) {
doc.addEventListener("click", this.iframeClickHandler, false)
} else if (typeof doc.attachEvent !== undefined) {
doc.attachEvent("onclick", function (this) {this.iframeClickHandler(this)})
}
}
iframeClickHandler(e): void {
e.preventDefault();
let vars : string = e.target;
let rx = new RegExp("([^?=&]+)(=([^&]*))?", "g");
let xx = rx.exec(vars);
// let var1 : String = vars.match(/(\?|\&)([^=]+)\=([^&]+)/g).toString(); // match is undefined if used
// let var2 : String = JSON.parse('{"' + decodeURI(var1.replace(/\?/g, "").replace(/&/g, "\",\"").replace(/=/g,"\":\"")) + '"}') // replace is undefined if used
this.router.navigate(['/customer/100100109']); // Uncaught TypeError: Cannot read property 'navigate' of undefined
}
事前に任意の助けてくれてありがとう。 Rob Thompson