我使用的是Angular2 2.1.0。当我想要显示公司列表时,我得到了这个错误。

在file.component.ts中:

public companies: any[] = [
    { "id": 0, "name": "Available" },
    { "id": 1, "name": "Ready" },
    { "id": 2, "name": "Started" }
];

在file.component.html中:

<tbody>
  <tr *ngFor="let item of companies; let i =index">
     <td>{{i}}</td>
     <td>{{item.name}}</td>
  </tr>
</tbody>

当前回答

就我而言, 我已经在我的共享模块和组件将要使用的功能模块中包含了CommonModule,但在我的情况下,我在服务器启动(编译)时保存了一些文件,也许这就是为什么它没有正确地获取所包含模块的注册表

我重启了我的本地服务器,它解决了我的问题

其他回答

将BrowserModule添加到@NgModule()中的imports:[],如果它是根模块(AppModule),否则是CommonModule。

// older Angular versions
// import {BrowserModule, CommonModule} from '@angular/common';

import { BrowserModule } from '@angular/platform-browser'
..
..
@NgModule({
  imports: [BrowserModule, /* or CommonModule */],
  ..
})

我有同样的错误,但我有CommonModule导入。相反,我在不应该的地方留下了逗号,因为在分割模块时需要复制/粘贴:

@NgModule({
    declarations: [
        ShopComponent,
        ShoppingEditComponent
    ],
    imports: [
        CommonModule,
        FormsModule,
        RouterModule.forChild([
            { path: 'shop', component: ShopComponent }, <--- offensive comma
        ])
    ]
})

就我而言, 我已经在我的共享模块和组件将要使用的功能模块中包含了CommonModule,但在我的情况下,我在服务器启动(编译)时保存了一些文件,也许这就是为什么它没有正确地获取所包含模块的注册表

我重启了我的本地服务器,它解决了我的问题

在所有代码中使用正确的语法后,请查看是否在angular模块的声明中提到了你的组件。 如下所示:

@NgModule ({ 声明:[ AppComponent, YourComponent ),

对我来说,解决问题的方法是对我的项目做一个git克隆并运行(像往常一样):

npm install