2016-10-23 27 views
6

मैं रूटिंग के साथ कोणीय 2 का उपयोग कर रहा हूं और मेरा पृष्ठ प्रारंभिक लोड पर डुप्लिकेट सामग्री दिखा रहा है। एक बार जब मैं किसी लिंक (पेज 1 या पेज 2) पर क्लिक करता हूं तो सब कुछ सही काम करता है (कोई और डुप्लिकेट सामग्री नहीं है)। क्यों मैं प्रारंभिक लोड पर डुप्लिकेट सामग्री हो रही है और क्या मैं इसे प्रदर्शित एक बार केवलकोणीय 2 रूटिंग: दो बार लोड हो रहा है

स्क्रीन शॉट enter image description here

index.html

<html> 
 
<head> 
 
    <base href="/"> 
 
    <title>Angular QuickStart</title> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> 
 
    <link rel="stylesheet" href="styles.css"> 
 
    <!-- 1. Load libraries --> 
 
    <!-- Polyfill(s) for older browsers --> 
 
    <script src="node_modules/core-js/client/shim.min.js"></script> 
 
    <script src="node_modules/zone.js/dist/zone.js"></script> 
 
    <script src="node_modules/reflect-metadata/Reflect.js"></script> 
 
    <script src="node_modules/systemjs/dist/system.src.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
    <!-- 2. Configure SystemJS --> 
 
    <script src="systemjs.config.js"></script> 
 
    <script> 
 
     System.import('app').catch(function(err){ console.error(err); }); 
 
    </script> 
 
</head> 
 
<!-- 3. Display the application --> 
 
<body> 
 
    <my-app> 
 
     Loading... 
 
    </my-app> 
 

 
</body> 
 
</html>

अनुप्रयोग की आवश्यकता है। module.ts

import { NgModule } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { AppComponent } from './app.component'; 
import { Page1Component } from './Page1/Page1.component'; 
import { Page2Component } from './Page2/Page2.component'; 
import { RouterModule } from '@angular/router'; 


@NgModule({ 
    imports: [BrowserModule, 

      RouterModule.forRoot([ 
       { path: '', component: AppComponent }, 
       { path: 'Page1', component: Page1Component }, 
       { path: 'Page2', component: Page2Component } 
      ]) 
     ], 
    declarations: [AppComponent, Page1Component, Page2Component], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

App.html (इस प्रारंभिक अनुरोध के दौरान लोड हो जाता है)

<div class="container"> 
 
     <div class="row"> 
 
      <nav class="navbar navbar-default"> 
 
       <div class="container-fluid"> 
 
        <!-- Brand and toggle get grouped for better mobile display --> 
 
        <div class="navbar-header"> 
 
         <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> 
 
          <span class="sr-only">Toggle navigation</span> 
 
          <span class="icon-bar"></span> 
 
          <span class="icon-bar"></span> 
 
          <span class="icon-bar"></span> 
 
         </button> 
 
         <a class="navbar-brand" href="#">Brand</a> 
 
        </div> 
 
        <!-- Collect the nav links, forms, and other content for toggling --> 
 
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
 
         <ul class="nav navbar-nav"> 
 
          <li class="active"><a [routerLink]="['/Page1']">Page1 <span class="sr-only">(current)</span></a></li> 
 
          <li><a [routerLink]="['/Page2']">Page2</a></li> 
 
          <li class="dropdown"> 
 
           <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> 
 
           <ul class="dropdown-menu"> 
 
            <li><a href="#">Action</a></li> 
 
            <li><a href="#">Another action</a></li> 
 
            <li><a href="#">Something else here</a></li> 
 
            <li role="separator" class="divider"></li> 
 
            <li><a href="#">Separated link</a></li> 
 
            <li role="separator" class="divider"></li> 
 
            <li><a href="#">One more separated link</a></li> 
 
           </ul> 
 
          </li> 
 
         </ul> 
 
         <form class="navbar-form navbar-left"> 
 
          <div class="form-group"> 
 
           <input type="text" class="form-control" placeholder="Search"> 
 
          </div> 
 
          <button type="submit" class="btn btn-default">Submit</button> 
 
         </form> 
 
         <ul class="nav navbar-nav navbar-right"> 
 
          <li><a href="#">Link</a></li> 
 
          <li class="dropdown"> 
 
           <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> 
 
           <ul class="dropdown-menu"> 
 
            <li><a href="#">Action</a></li> 
 
            <li><a href="#">Another action</a></li> 
 
            <li><a href="#">Something else here</a></li> 
 
            <li role="separator" class="divider"></li> 
 
            <li><a href="#">Separated link</a></li> 
 
           </ul> 
 
          </li> 
 
         </ul> 
 
        </div><!-- /.navbar-collapse --> 
 
       </div><!-- /.container-fluid --> 
 
      </nav> 
 
     </div> 
 
     <div class="row"> 
 
      <div class="md-col-2"></div> 
 
      <div class="md-col-10"><router-outlet></router-outlet></div> 
 
     </div> 
 
    </div>

उत्तर

13

AppComponent मार्ग का हिस्सा नहीं होना चाहिए। यह रूट आउटलेट रखता है।

{ path: '', component: AppComponent }, 

बेस पथ के बजाय आपको क्या करना चाहिए, यह तय करना है कि कौन सा घटक/पथ डिफ़ॉल्ट दृश्य होना चाहिए, फिर पथ पर रीडायरेक्ट करें। उदाहरण के लिए यदि पृष्ठ 1 डिफ़ॉल्ट दृश्य होना चाहिए, तो

{ path: '', redirectTo: 'page1', pathMatch: 'full' }, 
करें
संबंधित मुद्दे