2016-08-22 52 views
0

我有我的根模块,它看起来像这根模块:导入自定义模块到不工作

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { routing, appRoutingProviders } from './app.routing'; 

import { LoginModule } from './login/login.module'; 
import { UserModule } from './user/user.module'; 
import { NavbarModule } from './navbar/navbar.module'; 

import { AppComponent } from './app.component'; 

@NgModule({ 
    imports:  [ BrowserModule, routing, NavbarModule ], 
    declarations: [ AppComponent ], 
    providers: [ appRoutingProviders ], 
    bootstrap: [ AppComponent ] 
}) 

export class AppModule { } 

我写与处理导航栏的各个部分的各种组件的导航栏(我只是想成为真正的细粒度的,像spotify的方法)。

所以最后我会有很多组件都加起来一次导航栏,所以觉得自然就像一个模块的使用?所以,我创建了一个导航栏模块:

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 

import { NavbarComponent } from './navbar.component'; 

@NgModule({ 
    imports:  [ ], 
    declarations: [ NavbarComponent ], 
    providers: [ ], 
    bootstrap: [ NavbarComponent ] 
}) 

export class NavbarModule { } 

的例子生病棒着想,一个导航栏组件,它看起来像这样

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

@Component({ 
    selector: 'navbar', 
    templateUrl: './navbar.template.html' 
}) 

export class NavbarComponent { } 

HTML模板只包含标准引导导航栏的代码...

因此,您可以看到我已经将NavbarModule导入到AppModule中,根据我对模块工作原理的了解,应该让NavbarComponent对我在AppModule中定义的所有组件都可用?

因此,当我在我的AppComponent的html模板中使用 时,它应该渲染出NavbarComponent的东西?相反,它只是保留一个空的导航栏标签?

任何想法?另外,如果我对模块及其导入模式的理解完全不了解,请您链接一些可以为我澄清这一点的材料?我已阅读角度文档,这是我从现在的理解。

谢谢

回答

1

我发现我的问题。在我的导航栏模块的元数据中,我没有导出导航栏组件,因此它不适用于导入它的模块!以下解决方案

navbar.module

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 

import { NavbarComponent } from './navbar.component'; 

@NgModule({ 
    imports:  [ ], 
    declarations: [ NavbarComponent ], 
    providers: [ ], 
    exports:  [ NavbarComponent ], 
    bootstrap: [ NavbarComponent ] 
}) 

export class NavbarModule { }