2016-10-05 7 views
1

Жаль, что я еще не знаком с Angular 2, я сделал свое исследование, но все еще смущен тем, как работает маршрутизация. Ниже мой маршрут конфигурации:Угловая 2 маршрутизация (поведение маршрутизации)

export const appRoutes: Route[] = [ 
    { 
     path: '', 
     component: SiteLayoutComponent, 
     children: [ 
      { 
       path: '', 
       pathMatch: 'full', 
       component: HomeComponent 
      }, 
      { 
       path: 'system', 
       children: [ 
        { 
         path: '', 
         pathMatch: 'full', 
         component: MenuItemListComponent, 
        }, 
        { 
         path: 'menuitemlist', 
         component: MenuItemListComponent, 
        }, 
       ], 
      }, 
      { 
       path: 'setting', 
       children: [ 
        { 
         path: '', 
         pathMatch: 'full', 
         component: CountryListComponent, 
        }, 
        { 
         path: 'countrylist', 
         component: CountryListComponent, 
        }, 
       ], 
      } 
     ], 
    }, 
]; 

Мой app.module выглядит следующим образом:

// Angular2 libraries 
import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { RouterModule } from '@angular/router'; 
import { APP_BASE_HREF, LocationStrategy, PathLocationStrategy } from '@angular/common'; 

// Main 
import { AppComponent } from './app.component'; 
import { appRoutes, appComponents } from './app.routing'; 


@NgModule({ 
    // directives, components, pipes 
    declarations: [ 
     AppComponent, 
     appComponents 
    ], 
    // modules 
    imports: [ 
     BrowserModule, 
     RouterModule.forRoot(appRoutes), 
    ], 
    providers: [ 
     { provide: LocationStrategy, useClass: PathLocationStrategy }, 
     { provide: APP_BASE_HREF, useValue: '/' }, 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

Мой app.component выглядит следующим образом:

import { Component } from '@angular/core'; 

@Component({ 
    moduleId: module.id, 
    selector: 'content', 
    template: '<router-outlet></router-outlet>' 
}) 
export class AppComponent { 
} 

Мой index.html выглядит следующим образом :

<!DOCTYPE html> 

<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>TEST</title> 


    <!-- npm packages --> 
    <script src="/node_modules/es6-shim/es6-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.js"></script> 
    <script src="/node_modules/rxjs/bundles/Rx.js"></script> 


    <!-- Configure SystemJS --> 
    <script src="systemjs.config.js"></script> 

    <script> 
     System.import('./app/boot').catch(
      function (err) { 
       console.error(err); 
      } 
     ); 
    </script> 
</head> 
<body> 
    <content>Loading...</content> 
</body> 
</html> 

Мой сайт-макет .component.html выглядит следующим образом:

<a routerLink="setting/countrylist"><span class="txt">Country</span></a> 
<a routerLink="system/menuitemlist"><span class="txt">Menu Item</span></a> 

<br /> 
<router-outlet></router-outlet> 

Мое приложение дерево выглядит следующим образом:

enter image description here

Вопрос в том, что мой HTML выглядит, прежде чем нажать любые ссылки:

enter image description here

Это то, на что похоже, после нажатия на ссылку:

enter image description here

Проблемы возникают после нажатия ссылки, ссылки больше не работают. Извините за длинный пост, я уже отчаянно пытаюсь решить эту проблему, надеюсь, кто-то может мне помочь в этом. Я уже видел много ресурсов, но пока не нашел решения для этого. Заранее спасибо!

ответ

1

Добавить

`pathMatch: 'full'` 

на path: '' маршруты, если они не имеют детей маршрутов

' Добавить по пути

<a [routerLink]="'setting/countrylist'"> 

или удалить []

<a routerLink="setting/countrylist"> 

поэтому setting/countrylist передается как строка вместо выражения.

Если <a [routerLink]="..."> находится внутри маршрутизируемого компонента, запустите путь с помощью /, чтобы обеспечить абсолютную маршрутизацию вместо относительной маршрутизации.

+0

hi Gunter my router link выглядит так: '{{subMenuInfo.name}}', это из массива классов. – arvstracthoughts

+0

Не в коде в вашем вопросе (у меня была опечатка 'Ä' вместо' ''). –

+0

благодарю вас за ответ Gunter, но знаете ли вы, почему маршрутизация ведет себя так, как я писал на изображении выше? – arvstracthoughts

Смежные вопросы