2017-07-18 9 views
0

モーダルダイアログを使用して再ルーティングしようとすると、Angular4アプリケーションでいくつかの興味深い問題が発生します。私は何モーダルコンテキストからルーティングするときの予期しないスクロール動作

ボタン上の私はモーダルダイアログが表示されます関数を呼び出すクリックしてください:

private modalProcess(instance: any, scssCb: Function, errCb?: Function) { 
instance.open() 
    .then(function (resultPromise: any) { 
    resultPromise.result.then((result: any) => { 
     scssCb(); 
     this.logger.i('modal ok'); 
    }, function() { 
     if (errCb) 
     errCb(); 
     this.logger.i('modal rejected'); 
    }); 
    }); 
} 
:私は「一般的な」機能を持っているモーダルのイベントを処理するための

public resetAndBack() { 
let that = this; 
this.modalProcess(this.cancelModal, 
    function() { 
    that.isNewVer = false; 
    that.router.navigate(['/doc/search']); 
    }); 
} 

私は、コードを明確にするために、別のクラスにカプセル化されたモーダルダイアログを持っています:

あなたが推測するように、クラスのコンストラクタで作成され

this.cancelModal = new CancelConfirmModal(this); 

は、(SCSSコールバックを呼び出す)をクリックした後に何が起こるのか、「OK」を1つのモーダルは、アプリケーションが再ルーティングされるということであるが、垂直スクロールバーが消えます完全に。他のすべてのページで、アプリケーション上をナビゲートすることができます。単にページをスクロールすることはできません。ページ全体をリフレッシュするだけです。

一方、modalProcess関数を省略し、の直後にresetAndBack関数呼び出しを呼び出すと、正しく機能します。

私は、技術的に何が起こっているのか、私が達成しようとしているもののより良い形になるのか、教えていただきたいと思います。

教えていただけますか? ありがとう

答えて

0

リダイレクトする前にモーダルウィンドウを閉じる必要があります。これは私が取り組んでいるプロジェクトで同じ問題を解決しました。