2017-07-18 12 views
1

vanilla JSでは、リンクをナビゲートするのをやめるのは簡単です。preventDefault()。しかし、Angularでは、それは簡単ではないようで、適切な解決策が何であるか分かりません。たとえば、いくつかの項目がいくつかの条件でドロップダウンであり、クリック時に開くべきであり、他の項目では通常のリンクとして動作するようなトップメニューがあります。特定の状況下での経路の移動を防止する

toggleMenu(event: Event) { 
    event.preventDefault(); 
    // Usual logic goes here 
} 

これはナビゲーションを停止するものではありませんが、これを停止する方法はわかりません。私はそれを停止するためにサービスとすべてのリンク上のガードを作成することによってはるかに複雑にすることができますが、それは間違いなく過度の感じている。何かアドバイス?

+1

あなたは 'routerLink'を停止しようとしていますか? – cgTag

+0

はい、申し訳ありませんが、それが明確でない場合。 – RhoVisions

答えて

3

これは良い質問ですが、ClickLinkのソースコードには、クリックハンドラを無効にすることがサポートされているという明確な意図はありません。

nullをルータリンクに割り当てると、現在のルートにルーティングされます。基本的には経路を変更しないのと同じですが、まだ経路変更を引き起こすかどうかはわかりません。

<a [routeLink]="condition ? '/my/route/address' : null">Link</a> 

conditionテンプレート変数を指定できたり、より複雑な何かを計算する必要がある場合は、コンポーネントのメソッドを呼び出すことができます。リンクを無効にする場合は、nullが鍵です。

+0

ありがとうございます。私はそれがルート変更を引き起こすかどうか見てみましょう。 – RhoVisions

関連する問題