ng g module user --routing
{% code title="src/app/app.module.ts" %}
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent,
HomeComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
{% endcode %}
{% code title="src/app/app-routing.module.ts" %}
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'users', loadChildren: 'src/app/user/user.module#UserModule' }, ///changed
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
{% endcode %}
{% code title="src/app/user/user-routing.module.ts" %}
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { UserListComponent } from './user-list/user-list.component'; // changed
const routes: Routes = [
{ path: '', component: UserListComponent }, //changed
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class UserRoutingModule { }
{% endcode %}
{% code title="src/app/user/user.module.ts" %}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { UserListComponent } from './user-list/user-list.component'; //added
import { UserRoutingModule } from './user-routing.module';
@NgModule({
imports: [
CommonModule,
UserRoutingModule
],
declarations: [
UserListComponent //added
]
})
export class UserModule { }
{% endcode %}
{% code title="src/app/app.component.html" %}
<h1>The App</h1>
<div>
<button [routerLink]="['/']" routerLinkActive="router-link-active" >home</button>
<button [routerLink]="['/users']" routerLinkActive="router-link-active" >users</button>
</div>
<!-- <app-home></app-home> -->
<router-outlet></router-outlet>
{% endcode %}
As of Angular CLI version 6+ you can now have multiple projects in an Angular app. It is early days and no support for sharing modules between apps and best practices or schematics made. That is what Nx can help with. You can read more on the Angular CLI limited docs https://github.com/angular/angular-cli/wiki/stories-multiple-projects
In the terminal run
ng generate application my-other-app
Angular CLI v6 comes with library support via ng-packagr plugged into the build system we use in Angular CLI, together with schematics for generating a library.
https://github.com/angular/angular-cli/wiki/stories-create-library
In the terminal run
ng generate library my-lib