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

当前回答

我认为我的情况是一个罕见的情况,但我还是会回答。

我没有任何语法错误,我导入了BrowserModule,我重新声明了我的IDE (VS Code),但我仍然在我的模板中有红线,因为我使用了*ngFor。

这是因为我正在使用一个扩展,Angular语言服务,但它相当老了。更新后,错误停止出现。

其他回答

将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 */],
  ..
})

我开始在Angular8基础上的live项目得到了上述问题,但当使用“app-routing。我们忘记导入CommonModule了。记得导入!

import { CommonModule } from '@angular/common';

@NgModule({
  imports: [
    CommonModule
]})

它将解决你的错误。

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

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

可能有以下原因:

你的模块在imports[]中没有CommonModule 你使用*ngFor或*ngIf的组件不是任何模块的一部分。 你可能在*ngFor中有拼写错误,比如**ngFor或*ngFor等。 如果一切正常,重新启动你的应用程序,即ng serve或IDE,即VS Code, IntelliJ等。

如果您正在创建自己的模块,则在自己的模块中导入CommonModule