note: I'm new to Angular, so please excuse any new comer stupidity here.
Details
Issue
compiler.es5.js:1689 Uncaught Error: Unexpected directive 'ProjectsListComponent' imported by the module 'ProjectsModule'. Please add a @NgModule annotation.
App Module
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { AngularFireModule } from 'angularfire2'; import { AngularFireDatabaseModule } from 'angularfire2/database'; import { AngularFireAuthModule } from 'angularfire2/auth'; import { environment } from '../environments/environment'; import { ProjectsModule } from './projects/projects.module'; import { HttpModule } from '@angular/http'; @NgModule({ imports: [ BrowserModule, HttpModule, ProjectsModule, AngularFireModule.initializeApp(environment.firebase, 'AngularFireTestOne'), // imports firebase/app needed for everything AngularFireDatabaseModule, // imports firebase/database, only needed for database features AngularFireAuthModule // imports firebase/auth, only needed for auth features ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } Projects Module
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { ProjectsListComponent } from './projects-list.component'; import { RouterModule } from '@angular/router'; @NgModule({ declarations: [ ProjectsListComponent ], imports: [ BrowserModule, ProjectsListComponent, RouterModule.forChild([ { path: 'projects', component: ProjectsListComponent } ]) ] }) export class ProjectsModule { } The process I've taken to setting the module up hasn't been any different to when I was using Angular 2. However, after having issues with compatibility between Angular Cli, firebase and angular fire, I decided to get the latest of everything this morning.
Any help with this one would be massssssively appreciated as I've hit a brick wall with my understanding of it all.
Thank you.
The problem is the import of ProjectsListComponent in your ProjectsModule. You should not import that, but add it to the export array, if you want to use it outside of your ProjectsModule.
Other issues are your project routes. You should add these to an exportable variable, otherwise it's not AOT compatible. And you should -never- import the BrowserModule anywhere else but in your AppModule. Use the CommonModule to get access to the *ngIf, *ngFor...etc directives:
@NgModule({ declarations: [ ProjectsListComponent ], imports: [ CommonModule, RouterModule.forChild(ProjectRoutes) ], exports: [ ProjectsListComponent ] }) export class ProjectsModule {} project.routes.ts
export const ProjectRoutes: Routes = [ { path: 'projects', component: ProjectsListComponent } ]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With