【问题标题】:Angular 2 final release: Cannot find name 'PatternDetails'Angular 2 最终版本:找不到名称“PatternDetails”
【发布时间】:2016-09-20 19:05:44
【问题描述】:

我收到一个错误,即找不到“PatternList”(这是我创建的接口)。如果我尝试导入它,我会收到一个错误,即 PatternDetails 不是模块。我不确定是什么导致了这个错误。我在 angular2 项目中尝试配置 Webpack 时遇到了这个错误。

这是我使用 PatternDetails 接口的组件之一:

@Component({
  selector: 'pattern-detail',
  template: `
    <div class="pattern-detail" [ngClass]='{active: metadata.status.backendValidationStatus == "FAIL",
      unactive: metadata.status.backendValidationStatus == "OK",
      warning: metadata.status.backendValidationStatus == "WARN",
      selected: metadata.selected
    }' (click)="patternClicked(metadata)">
      <div class="name-details">
        <h3>{{metadata.displayName}}</h3>
        <p>{{metadata.details}}</p>
      </div>
      <div class="time-details">
        <p class='last_update'>{{metadata.lastupdate}}</p>
      </div>
    </div>
  `,
  styleUrls: ['/css/pattern_detail.css']
})
export class PatternDetailComponent {

  @Input() metadata:PatternDetails;
  @Output() selectPattern = new EventEmitter<PatternDetails>();

  patternClicked(pattern: PatternDetails) {
    this.selectPattern.emit(pattern);
  }

}

这是 PatternDetails 接口:

interface PatternDetails {
  patternClass: string;
  version: string;
  id: string;
  displayName: string;
  lastupdate: string;
  details: string;
  status: Status;
  selected: boolean;
}

我不确定我还应该包括什么,但经过调查,我发现 tsconfig.json 可能存在问题,所以我也将其包括在内:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": [
      "../node_modules/@types"
    ]
  },
  "types" : [
    "core-js"
  ],
  "exclude": [
    "node_modules"
  ]
}

app.module.ts

@NgModule({
  imports: [ BrowserModule, FormsModule, HttpModule, ReactiveFormsModule ],
  declarations: [ AppComponent, PatternListComponent, PatternDetailComponent, WidgetListComponent,
    FormComponent, DefaultWidget, LabelComponent, CheckboxWidget ],
  bootstrap: [ AppComponent ],
  providers: [ WidgetService ]
})
export class AppModule { }

【问题讨论】:

  • 发布您的AppModule。
  • 完成 :) 希望对您有所帮助

标签: angular typescript webpack


【解决方案1】:

你需要导出你的界面:

export interface PatternDetails {

...

}

【讨论】:

  • @ZolcsakTamas 检查我编辑的答案,你没有导出你的界面,因此,你不能导入它。
  • 向界面添加导出有效 :) 但我不需要将 PatternDetails 添加到 AppModule,只需将导出添加到界面即可。谢谢:D
  • @ZolcsakTamas 太好了,我编辑了我的答案以避免在有人遇到相同问题时造成混淆。很高兴我能帮上忙。
猜你喜欢
  • 2017-01-28
  • 2016-12-24
  • 1970-01-01
  • 2018-07-31
  • 2016-09-01
  • 2017-01-24
  • 2022-01-23
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多