我正在使用Angular 2 CLI,并使用ng generate component MyComponent
创建了组件“MyComponent”。据我所知,我必须将组件添加到@Component
装饰器的指令键值对,但此时打字稿编译失败,说:
ERROR in [default] /Users/Philip/Desktop/Angular2/src/app/app.component.ts:8:2
Argument of type '{ selector: string; template: any; styles: any[]; directives: typeof MyComponentComponent[]; }' is not assignable to parameter of type 'Component'.
Object literal may only specify known properties, and 'directives' does not exist in type 'Component'.
这是我的应用代码:
import { Component } from '@angular/core';
import { MyComponentComponent } from './my-component/my-component.component'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
directives: [MyComponentComponent],
})
export class AppComponent {
title = 'app works!';
}
我没有触及生成组件的代码,但以防万一:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})
export class MyComponentComponent implements OnInit {
constructor() {
}
ngOnInit() {
}
}
答案 0 :(得分:35)
Angular2 Component装饰器不再使用它们来嵌入其他组件。我们需要使用名为entryComponents的新元数据。见下面的例子......
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
entryComponents:[VehicleListComponent]
})
vehicle-list-component具有以下组件元数据..
@Component({
selector: 'app-vehicle-list',
templateUrl: './vehicle-list.component.html',
styleUrls: ['./vehicle-list.component.css'],
providers: [VehicleService]
})
答案 1 :(得分:18)
错误本身表示指令并不存在于 组件中,因为它已被弃用。试试下面显示的代码,
import { MyComponentComponent } from './my-component/my-component.component'
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
@NgModule({
...
...
declarations:[AppComponent,MyComponentComponent], //<---need to declare
schemas: [CUSTOM_ELEMENTS_SCHEMA] //<---added this line
})
从 AppComponent 中删除指令:[MyComponentComponent] 。
答案 2 :(得分:1)
如果您使用Angular CLI,则新组件将自动导入并添加到app.module.ts中@ngmodule的声明部分。我们不需要为此编写任何代码。
答案 3 :(得分:1)
运行create component命令后,无需使用ANGULAR 4或更高版本。错误很可能只是您没有使用新组件元数据文件中的正确选择器名称(例如componentname.component.ts)。
答案 4 :(得分:0)
您有两种选择:
1:在Component
中使用entryComponents标签2:使用Angular CLI自动导入它,因此我们不需要为其明确编写代码。