2017-09-13 35 views
0

我正在使用angular 2.4.10。通過點擊一個側面菜單項,我使用的是路由器瀏覽我的網站:angular 2 routing:如何強制應用程序停留在當前頁面上並打開對話框

import { ModuleWithProviders } from '@angular/core'; 
import { RouterModule } from '@angular/router'; 

... 
import { PartsComponent } from './parts/parts.component'; 
... 

export const brambleRouting: ModuleWithProviders = 
RouterModule.forChild([ 
{ 
    path: '', 
    component: BrambleRoot, 
    canActivate: [AuthGuard], 
    children: [ 
     ... 
     {path: 'parts', component: PartsComponent}, 
     ... 
     {path: 'model-builder', component: ModelBuilderComponent} 
    ] 
} 
]); 

正如你可以看到我可以導航到使用路徑和相關PartsComponent的部件組件。

現在,導航到ModelBuilderComponent的代碼不是我想要的。 ModelBuilderComponent有一個包含模態彈出框的HTML文件。如何爲模型構建器定義路由,以便我的應用停留在當前頁面上並調用ModelBuilderComponent中的open-dialogue()函數?感謝您的幫助,迪諾。

回答

0

不知道下面要解決的正確方法我的問題,但它的作品。最後,我已經添加了templateUrl到側面菜單templateUrl:

<model-builder></model-builder> 
現在

在側面menu.component.ts我可以運行openDialog()函數和對當前的頂部顯示的模態頁面而不被重定向到模型生成器頁面。請隨時發表評論並提出更好的解決方案。

0

你可以使用partsComponent和ModelBuilderComponent之間的公共服務來做到這一點。在服務中創建一個可觀察變量並在ModelBuilderComponent組件中對其進行訂閱,以便每當其他組件更改該變量時,就會在ModelBuilderComponent中調用該訂閱方法。所以你可以做你想用它做什麼都..

0

,你可以嘗試通過導航額外的選項replaceUrl爲false,skipLocationChange真

this.router.navigate(['/model-builder], { replaceUrl: false, skipLocationChange: true }); 
+0

這會停止在瀏覽器歷史記錄中記錄該頁面,但該鏈接仍然會導航到模型生成器頁面。 – Dino

相關問題