2017-06-08 5 views
6

जब मैं एक नई ब्राउज़र विंडो में अपना कोणीय 2 ऐप खोलता हूं तो मुझे ब्राउज़र पृष्ठ इतिहास में 10 प्रविष्टियां मिलती हैं। इस रूटर में सूचीबद्ध किसी भी पृष्ठ पर और कोई पृष्ठ निर्दिष्ट (यानी http://localhost:8080 या http://localhost:8080/survey आदि)कोणीय 2 - पेज लोड पर कई इतिहास प्रविष्टियां

const routes: Routes = [ 
    {path: 'survey', component: SurveyComponent, canActivate: [AuthGuard]}, 
    {path: 'survey/:id', component: SurveyComponent, canActivate: [AuthGuard]}, 
    {path: '', component: HomeComponent}, 
    {path: 'about', component: AboutComponent}, 
    {path: 'terms', component: TermsAndConditionsComponent}, 
    {path: 'map', component: MapComponent}, 
    {path: 'what-next', component: WhatNextComponent}, 
    {path: 'contact', component: ContactComponent}, 
    {path: '**', redirectTo: '', pathMatch: 'full'}, 
]; 

मैं उपयोग कर रहा हूँ रूटर 3.1.2

"@angular/router": "3.1.2", 

enter image description here

मैं के साथ होता है पिछले साल मार्च से similar question मिला लेकिन उत्तर का दावा है कि इसे पहले से ही कोणीय के कोड में हल किया गया था।

अद्यतन के रूप में अनुरोध किया है, यहाँ

import {Injectable} from '@angular/core'; 
import {AuthenticationService} from '../_services/index'; 
import {LoginModalService} from "../login_modal/login_modal.service"; 
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router'; 
import {Observable} from 'rxjs/Observable'; 

@Injectable() 
export class AuthGuard implements CanActivate { 

    constructor(private authentication: AuthenticationService, private loginModalService: LoginModalService) { 
    } 

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
     if (this.authentication.isAuthenticated()) { 
      return Observable.of(true); 
     } else { 
      this.loginModalService.toggleVisable(state.url); 
      return Observable.of(false); 
     } 
    } 
} 
+4

मुझे लगता है कि मैं एक नमूना आवश्यकता होगी मुख्य मार्ग याद कोडबेस को देखने के लिए, मैंने यह मेरे किसी भी कोणीय ऐप्स में नहीं किया है, इसलिए मुझे यकीन नहीं है कि इस समस्या को पुन: उत्पन्न कैसे करें ... – MichaelSolati

+0

यदि हम वहां सूचीबद्ध आपके घटकों को देख सकते हैं तो यह आसान होगा एक समाधान या कम से कम एक सुराग दें, केवल एक ही विचार है कि मैं अभी सुझाव दे सकता हूं कि मार्ग की घटनाओं को सुन रहा है, इस उत्तर को जांचें https://stackoverflow.com/questions/33520043/how-to-detect-a- रूट-चेंज-इन-एंजुलर -2/38080657 # 38080657 –

+0

क्या आपने 4.2.0 को अपडेट करने का प्रयास किया है? –

उत्तर

3

मैं एक ऐसी ही स्थिति थी और मैं आलसी लोड हो रहा है मार्गों यही है आप में विज्ञापन मार्ग अलग मॉड्यूल के लिए मार्गों को अलग कर सकते द्वारा इसे हल AuthGuard कोड है मुख्य मार्ग में थी

की तरह मुख्य मार्ग लोड

 { 
     path: 'dashboard', 
     component: DashboardComponent, 
     }, 
     { 
     path: 'user', 
     loadChildren: 'app/user/user.module#UserModule', //in user module 
     }, 

अतः inthe उपयोगकर्ता मॉड्यूल आप

@NgModule ({ 
    imports: [ 
    userRoutingModule //contains my user module routes 
    ] , 

}) 
export class UserModule { 

} 

है तो उपयोगकर्ता मार्ग मॉड्यूल

const userRoutes: Routes = [ 
     { path: '', component: UserComponent}, 
    ]; 

@NgModule({ 
    imports: [ 
    RouterModule.forChild(userRoutes) 
    ], 

    exports: [RouterModule], 
    providers: [] 
    }) 
export class userRoutingModule { } 

thats कैसे मैं अपने समस्या हल हो जाती है, मुझे आशा है कि इस मदद करता है।

एनबी:

import.forRoot को इस मामले में यह सुनिश्चित करें कि रूट मॉड्यूल में (probly एप्लिकेशन मॉड्यूल आप उपयोगकर्ता मॉड्यूल आयात)

@NgModule({ 
    declarations: [ 
    ], 

    imports: [ 

    UserModule, //in your case maybe use survey module 

    ], 

    }) 

    export class AppModule {} //this is in my root module 
+0

मैंने LazyLoading (https://github.com/AngularClass/angular-starter/wiki/[email protected]) पर दस्तावेज़ों को देखा है लेकिन लोड में पथ नहीं प्राप्त कर सकते हैं बच्चे की संपत्ति स्वीकार किया जाए, भले ही यह उसी फ़ाइल में आयात विवरण में ठीक काम करता है – Craig

+0

यह आधिकारिक दस्तावेज़ों में प्रलेखित नहीं है लेकिन यहां पाया गया है: https://scotch.io/courses/routing-angular-2-applications/lazy-loading –

+0

इसमें कुछ भी सुधार नहीं हुआ है जिसे मैं डरता हूं।रन टाइम पर आयात में ठीक काम करने के रास्ते (वेबस्टॉर्म द्वारा नाम को स्वत: पूर्ण करने पर) मुझे "मॉड्यूल नहीं मिल रहा है" ./survey/survey.module '। " ******** '.survey/survey.module' से आयात {सर्वेक्षण मॉड्यूल}; स्थिरांक मार्गों: मार्गों = [ {पथ: ', घटक: HomeComponent}, {पथ:' सर्वेक्षण ', loadChildren:' ./survey/survey.module#SurveyModule ' }, – Craig

संबंधित मुद्दे