2017-05-22 4 views
1

내가 4. 각 에서 모듈의 가져 오기 문제가 있습니다 나는 다음과 같은 구조를 가지고 :가져 오기가 작동하지 않습니다

내 app.module.ts을

.... 
import { NavbarComponent } from './a2-components/navbar/navbar.component'; 
import { SidebarComponent } from './a2-components/sidebar/sidebar.component'; 
import {AdminModule} from './admin/admin.module'; 

@NgModule({ 
    imports: [ 
    ... 
    AdminModule, 
    MaterialModule.forRoot(), 
    ... 
    ], 
    providers: [ ], 
    declarations : [ 
    ... 
    NavbarComponent, 
    SidebarComponent, 
    ... 
    ], 
    bootstrap: [ AppComponent ] 
}) 

export class AppModule { 

} 

내 admin.module

... 
import { AdminComponent }  from './admin.component'; 
import { HomeComponent }  from './home/home.component'; 
import { AdminService }  from './admin.service'; 

@NgModule({ 
    imports: [ ... ], 
    declarations: [ AdminComponent, HomeComponent ], 
    providers:[ AdminComponent, AdminService ] 
}) 
export class AdminModule {} 

는 app.module는 admin.module보다 계층 적으로 더 큰 모듈입니다. @ angular/material, NavbarComponent 및 SidebarComponent를 가져오고 있지만 NavbarComponent 및 SidebarComponent 모듈이 admin.module 모듈에서 발견되지 않는다는 오류가 발생합니다.

오류 이미지 : 가 enter image description here

누군가가 나에게 팁을 줄 수 있는가?

+1

기본적으로 필요한 구성 요소 선언을 가져 오지 않습니다 (모든 'MaterialModule'은 모든 ** 구성 요소 선언을 번들로 묶습니다.)를 AdminModule 또는 다른 모듈의 범위에 가져옵니다. 단지 당신이'AppModule'로 가져 왔기 때문에 컴포넌트들은 자동으로 다른'NgModule' 비품들에게 제공되지 않습니다. 이것은 실제로 Angular에서 "모듈"의 핵심 부분입니다. 당신이 글로벌 이길 기대해야 할 유일한 것들은 "서비스"입니다. 그리고 "물질적 인"프로젝트는 더 이상 수출하지 않습니다. –

+0

위대한 설명. 고맙습니다, 친구! –

답변

1

angular-cli.json, index.html 또는 Style.css를 볼 수 있습니까?

부트 스트랩과 같은 스타일 용 프레임 워크를 추가하면 새 프레임 워크에 필요한 링크 CSS가 필요합니다.

은있는 style.css이 줄을 추가

@import '~https://fonts.googleapis.com/icon?family=Material+Icons'; 
@import '[email protected]/material/core/theming/prebuilt/deeppurple-amber.css'; 
@import '../node_modules/bootstrap/dist/css/bootstrap.min.css'; 

다른 생각을, 나는 모듈에 재료를 추가 할 때, 그냥이 코드를 넣어 :

import { MaterialModule } from '@angular/material'; 

@NgModule({ 
imports: [ 
    MaterialModule, 
]}) 

이 나를 위해 일했다.

+0

제게 답해 주셔서 고맙습니다. 하지만 한 가지만 대답 해주세요. 각도 재료를 각 하위 모듈로 가져 옵니까? app.module에서 가져오고 app.module의 구성 요소에서 작동하지만 하위 모듈에서는 작동하지 않습니다. 각 모듈로 가져올 공유 모듈을 만드는 방법에 대해 생각했지만 시스템에 과부하가 걸리는 것을 두려워했습니다. –

+1

예. 재료를 사용하는 구성 요소로 가져온 예, 저는 오래 전에 재료를 가져 왔지만, 당신이 원하는대로 tryed import를하는 것이 성공을 가져 오지 않았다고 생각합니다. 내 응용 프로그램은 간단하고 성능을 테스트 할 수 없습니다. 나는 이것을위한 공유 모듈을 만드는 greate 방법이라고 생각하며, 미래에도 시도 할 것입니다. – Dekonunes

+1

@DaniloSantos 당신이 "MaterialModule"을 "can"가져올 수있는 동안 당신은 정말로 그렇게해서는 안된다. 이것은 응용 프로그램의 제작 빌드를 선적 할 때 "트리 떨림"최적화를 망칠 것입니다. 대신 응용 프로그램 모듈의 범위에서 실제로 사용되는 구성 요소에 필요한 모듈을 가져옵니다. 'MaterialModule'과'MaterialModule.forRoot()'의 사용은 더 이상 사용되지 않는 것으로 간주되어야합니다. 앞으로의 릴리스에서는 해당 내보내기가 사라질 것으로 예상됩니다. –

관련 문제