2016-12-05 53 views
0

我與Angular2 CLI和Meteor合作。 我注意到當我用Angular2 CLI生成一個組件時,如果我想將它包含在另一個模塊中,我只需要包含它並將其插入該模塊的聲明數組中。 enter image description hereAngular2 CLI Angular-Meteor組件創建

menu.component.ts

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

import { MenuItem } from './menu-item';           
import { MENUITEMS } from './mocks'; 

@Component({ 
    selector: 'menu',                     
    templateUrl: './menu.component.html',           
    styleUrls: ['./menu.component.css'] 
}) 

export class MenuComponent implements OnInit { 

    menuItems: MenuItem[];                   

    constructor() { }                     

    ngOnInit() { 
    this.menuItems= MENUITEMS;               
    }                             

} 

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 { RouterModule } from '@angular/router'; 

import { AppComponent } from './app.component'; 
import { MenuComponent } from './menu/menu.component'; 
import { HomeComponent } from './home/home.component'; 
import { TrendsComponent } from './trends/trends.component'; 
import { ControllerComponent } from './controller/controller.component'; 
import { WaterPlantComponent } from './water-plant/water-plant.component'; 
import { DocsComponent } from './docs/docs.component'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    MenuComponent, 
    HomeComponent, 
    TrendsComponent, 
    ControllerComponent, 
    WaterPlantComponent, 
    DocsComponent 
    ], 
    imports: [ 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    RouterModule.forRoot([ 
     { path: 'home', redirectTo: '', pathMatch: 'full' }, 
     { path: '', component: HomeComponent }, 
     { path: 'trends', component: TrendsComponent }, 
     { path: 'controller', component: ControllerComponent }, 
     { path: 'waterplant', component: WaterPlantComponent }, 
     { path: 'docs', component: DocsComponent } 
    ]) 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

一起來看流星,之後我添加index.ts到menu.component文件夾它僅適用:

index.ts

import { MenuComponent } from './menu.component'; 

export * from './menu.component'; 

app.module.ts

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

import { AppComponent } from './app.component'; 
import { PARTIES_DECLARATIONS } from './parties'; 
import { MenuComponent } from './menu/menu.component'; 

@NgModule({ 
    imports: [ 
    BrowserModule 
    ], 
    declarations: [ 
    AppComponent, 
    ...PARTIES_DECLARATIONS, 
    MenuComponent 
    ], 
    bootstrap: [ 
    AppComponent 
    ] 
}) 
export class AppModule {} 

可能的原因是編譯器(該tsconfig.json內),這是用於ES6 CLI和jscommon爲流星的 「模塊」?

謝謝您的幫助!

+0

你的帖子很混亂,你說「有流星,它不工作,直到我沒有將文件index.ts添加到menu.component文件夾」 - 你真的想說「它只在我添加一個index.ts?「 – Mikkel

+0

是的,就是這一點。發佈編輯,謝謝 –

回答

0

看來,使用Angular CLI時,您使用的是Angular2樣式指南目錄結構,而不是Angular-Meteor directory structure,它建議將明確導入的文件放入名爲imports的目錄中。考慮到Meteor的混合模塊系統,是否可以爲imports目錄以外的文件使用Meteor default load order導致您的問題,這可以通過index.ts中的export聲明創建的MenuComponent的加載順序更改來解決?