我尝试使用Ngmodule和导入,所以我移动了这一行: (来自heroes.component.ts文件) 从' ./ hero'中导入{Hero};
到app.module.ts文件:
import { Hero } from './hero';
@NgModule({
imports: [
BrowserModule,
FormsModule,
routing,
Hero
],
但是我收到了这个错误:
[0] app/heroes.component.ts(20,11): error TS2304: Cannot find name 'Hero'
可以让组件只进行基本导入: 从' @ angular / core'中导入{Component,OnInit}; 并将所有其余的导入移动到NgModule?或者我有限制吗?
答案 0 :(得分:1)
是的,对NgModule中应该包含的内容有限制。实际上,一个模块将一组功能组合在一起,你只能向NgModule添加组件,指令,服务和其他模块,你的英雄导入应该在一个组件内,而不是一个模块。
import { Hero } from './hero';
//This import should stay inside app.component.ts
所以你的文件将是
//app.component.ts
import { Component } from '@angular/core';
import { Hero } from './hero';
@component({
selector: 'my-app',
template: `<p>A template goes in here</p>`
})
export class AppComponent {
public hero: Hero;
}
并且:
//app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule ], //other modules you require
declarations: [ AppComponent ], //declares components and directives
bootstrap: [ AppComponent ] //your root component
})
export class AppModule { }
答案 1 :(得分:1)
NgModule中的'导入'的原因不是导入组件,而是导入另一个模块(其他NgModule的文件,由其他组件分组)。
可以在'imports:'属性中将组件移动到Ngmodule: 导入行:import {} from'..';和'指令'行
可以将服务移动到'providers:'属性中的NgModule 但不同之处在于服务必须保留在组件中:import {} from'..';