模块'AppModule'声明的意外值'AnyComponent'

时间:2016-08-17 15:56:43

标签: angular typescript

我正在使用Angular2,当我尝试在同一个Typescript文件中使用两个类时,我遇到了这个问题。

在编译时不会给我任何错误但是当我尝试执行页面时,console.log会给出这个错误:

Error: BaseException@http://www.my.app/panel-module/node_modules/@angular/compiler//bundles/compiler.umd.js:5116:27
    CompileMetadataResolver</CompileMetadataResolver.prototype.getNgModuleMetadata/<@http://www.my.app/panel-module/node_modules/@angular/compiler//bundles/compiler.umd.js:13274:35
    CompileMetadataResolver</CompileMetadataResolver.prototype.getNgModuleMetadata@http://www.my.app/panel-module/node_modules/@angular/compiler//bundles/compiler.umd.js:13261:21
    RuntimeCompiler</RuntimeCompiler.prototype._compileComponents@http://www.my.app/panel-module/node_modules/@angular/compiler//bundles/compiler.umd.js:15845:28
    RuntimeCompiler</RuntimeCompiler.prototype._compileModuleAndComponents@http://www.my.app/panel-module/node_modules/@angular/compiler//bundles/compiler.umd.js:15769:36
    RuntimeCompiler</RuntimeCompiler.prototype.compileModuleAsync@http://www.my.app/panel-module/node_modules/@angular/compiler//bundles/compiler.umd.js:15746:20
    PlatformRef_</PlatformRef_.prototype._bootstrapModuleWithZone@http://www.my.app/panel-module/node_modules/@angular/core//bundles/core.umd.js:9991:20
    PlatformRef_</PlatformRef_.prototype.bootstrapModule@http://www.my.app/panel-module/node_modules/@angular/core//bundles/core.umd.js:9984:20
    @http://www.my.app/panel-module/app/main.js:4:1
    @http://www.my.app/panel-module/app/main.js:1:31
    @http://www.my.app/panel-module/app/main.js:1:2
    Zone</ZoneDelegate</ZoneDelegate.prototype.invoke@http://www.my.app/panel-module/node_modules/zone.js/dist/zone.js:332:20
    Zone</Zone</Zone.prototype.run@http://www.my.app/panel-module/node_modules/zone.js/dist/zone.js:225:25
    scheduleResolveOrReject/<@http://www.my.app/panel-module/node_modules/zone.js/dist/zone.js:586:53
    Zone</ZoneDelegate</ZoneDelegate.prototype.invokeTask@http://www.my.app/panel-module/node_modules/zone.js/dist/zone.js:365:24
    Zone</Zone</Zone.prototype.runTask@http://www.my.app/panel-module/node_modules/zone.js/dist/zone.js:265:29
    drainMicroTaskQueue@http://www.my.app/panel-module/node_modules/zone.js/dist/zone.js:491:26
    F/</g@http://www.my.app/panel-module/node_modules/core-js/client/shim.min.js:8:10016
    F/<@http://www.my.app/panel-module/node_modules/core-js/client/shim.min.js:8:10138
    a.exports/k@http://www.my.app/panel-module/node_modules/core-js/client/shim.min.js:8:14293

    Evaluating http://www.my.app/panel-module/app/main.js
    Error loading http://www.my.app/panel-module/app/main.js

下面是我的组件打字稿文件。

// MyComponent.ts

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: '/path/to/view',
})

export class MyObject {
  id: number;
}


export class MyComponent {
   obj: MyObject;

   // unecessary code
}

3 个答案:

答案 0 :(得分:35)

您必须更改类的顺序,然后在同一文件中有多个类没有问题。 在您的情况下,SELECT SUM(otherValue) FROM ( SELECT DISTINCT ID, AVAIL, otherValue FROM TEMP WHERE [AVAIL] = 1 ) T 现在用于您的班级decorator @Component而不是MyObject

MyComponent需要直接位于您的组件定义!!

之前
decorator @Component

答案 1 :(得分:2)

以下是我修复它的方法:

将MyObject放入一个单独的文件中并导入他。

// MyObject.ts

export class MyObject {
  id: number;
}

// MyComponent.ts

import { Component, OnInit } from '@angular/core';
import { MyObject } from 'path/to/MyObject';

@Component({
  selector: 'my-app',
  templateUrl: '/path/to/view',
})

export class MyComponent {
   obj: MyObject;

   // unecessary code
}

答案 2 :(得分:0)

仅供参考,我的情况我只是有一些js逻辑,它可能是

<my-tag [HTML]="sourcesHtml ? sourcesHtml[i] : ''">

更改为

<my-tag [HTML]="sourcesHtml[i]">

并删除了错误