Di recente, ho iniziato a giocare con Angular 2. È fantastico finora. Quindi, ho avviato un progetto personale demo per motivi di apprendimento angular-cli.
Con la configurazione di routing di base, ora desidero passare ad alcuni percorsi dall'intestazione, ma poiché la mia intestazione è un genitore di router-outlet, ricevo questo errore.
app.component.html
<app-header></app-header> // Trying to navigate from this component
<router-outlet></router-outlet>
<app-footer></app-footer>
header.component.html
<a [routerLink]="['/signin']">Sign in</a>
Ora capisco in parte suppongo che dal momento che quel componente è un involucro attorno ad router-outletesso non sarebbe possibile accedere in questo modo router. Quindi, c'è la possibilità di accedere alla navigazione dall'esterno per uno scenario come questo?
Sarei davvero felice di aggiungere ulteriori informazioni se necessario. Grazie in anticipo.
Aggiornare
1- Il mio package.jsonha già la @angular/router 3.3.1versione stabile . 2- Nel mio appmodulo principale , ho importato il file routing-module. Vedi sotto.
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AlertModule } from 'ng2-bootstrap';
import { LayoutModule } from './layout/layout.module';
import { UsersModule } from './users/users.module';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { PageNotFoundComponent } from './shared/components/not-found.component';
@NgModule({
declarations: [
AppComponent,
PageNotFoundComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
AlertModule.forRoot(),
LayoutModule,
UsersModule,
AppRoutingModule --> This is the routing module.
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { SigninComponent } from './users/signin/signin.component';
import { PageNotFoundComponent } from './shared/components/not-found.component';
const routes: Routes = [
{ path: '**', component: PageNotFoundComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}
Il percorso a cui sto tentando di accedere è delegato da un altro moduleche è ilUsersModule
user-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { SigninComponent } from './signin/signin.component';
const usersRoutes: Routes = [
{ path: 'signin', component: SigninComponent }
];
@NgModule({
imports: [
RouterModule.forChild(usersRoutes)
],
exports: [
RouterModule
]
})
export class UsersRoutingModule { }
Mentre sto provando a navigare da un componente che fa parte del Layoutmodulo, ma non ha alcuna idea del modulo router. È questo ciò che causa l'errore.
Layout.module.ts
import { NgModule } from '@angular/core';
import { HeaderComponent } from './header/header.component';
import { FooterComponent } from './footer/footer.component';
@NgModule({
declarations: [HeaderComponent, FooterComponent],
exports: [HeaderComponent, FooterComponent]
})
export class LayoutModule{}
Sto cercando di navigare dal HeaderComponent. Sarei felice di fornire ulteriori informazioni se necessario.
RouterModuleto imports: []di tutti i moduli in cui usi routerLinko<router-outlet>
AppRoutingModuleprimaLayoutModule