我使用的是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>

当前回答

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

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

其他回答

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

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

只是在修改了几个组件后出现了同样的问题。没有语法错误,所有模块都导入了,但是重新启动服务器解决了这个问题。 错误发生在一个组件中,该组件是在几十次成功提交之前添加的。

以防别人遇到同样的问题。

通过在其他(新/自定义)模块中导入CommonModule,许多答案似乎趋于一致。 这一步在所有情况下都是不够的。

完整的解决方案分为两步:

让NgIf, NgFor等指令对你的项目可见。 在主组件中以正确的方式重新组装所有内容

点1 主模块中的BrowserModule似乎足够访问NgFor了。 Angular文档把它写在这里:。

CommonModule用于导出所有基本的Angular指令和管道,比如NgIf、NgForOf、DecimalPipe等等。由BrowserModule重新导出,

参见此处接受的答案:CommonModule vs BrowserModule

点2 唯一需要改变的是(在我的情况下)如下:

导入模块 导入组件 Ng构建(重要!) ng服务

app.module.ts

@NgModule({
    imports: [
        BrowserModule,
        OtherModule
    ],
    declarations: [OtherComponent, AppComponent],
    bootstrap: [AppComponent]
})
export class AppModule {
}

other.html

<div *ngFor='let o of others;'> 
</div>

other.component.ts

@Component({
    selector: 'other-component',
    templateUrl: './other.html'
})
export class OtherComponent {
}

app.module.ts

@NgModule({
    imports: [],
    providers: []
})
export class OtherModule{
}

我也有同样的问题,即使我已经在“module”中导入了“BrowserModule”和“CommonModule”。它没有工作,我的错误是,没有添加“NgModule.declarations”我的组件。

@NgModule ({
   declarations: [
     Your_Component // here
   ]
}) 

我有一个问题,因为json数据中的空白。