无法使用打字稿将新组件添加到我的angular 2应用程序中

Phi*_*ann 17 typescript atom-editor angular-components angular

我正在使用Angular 2 CLI,并使用.创建了组件"MyComponent" ng generate component 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'.
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序代码:

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!';
}
Run Code Online (Sandbox Code Playgroud)

我没有触及生成的组件的代码,但以防万一:

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() {
  }

}
Run Code Online (Sandbox Code Playgroud)

小智 34

Angular2 Component装饰器不再使用它们来嵌入其他组件.我们需要使用名为entryComponents的新元数据.见下面的例子......

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  entryComponents:[VehicleListComponent]
})
Run Code Online (Sandbox Code Playgroud)

vehicle-list-component具有以下组件元数据..

@Component({
  selector: 'app-vehicle-list',
  templateUrl: './vehicle-list.component.html',
  styleUrls: ['./vehicle-list.component.css'],
  providers: [VehicleService]
})
Run Code Online (Sandbox Code Playgroud)

  • 我只是将"指令"替换为"entryComponents"并让它发挥作用.在这里阅读更多内容:https://angular.io/docs/ts/latest/api/core/index/Component-decorator.html (2认同)

mic*_*yks 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
})
Run Code Online (Sandbox Code Playgroud)

并从AppComponent中删除指令:[MyComponentComponent].