代码之家  ›  专栏  ›  技术社区  ›  thousight

Angular2 TypeScript指令错误TS2345

  •  17
  • thousight  · 技术社区  · 9 年前

    当我用tsc编译我的应用程序时,我得到以下错误TS2345:

    error TS2345: 
    Argument of type '{ selector: string; template: string; directives: (typeof Title | any[])[]; providers: typeof Goo...' is not assignable to parameter of type 'ComponentMetadataType'.
    

    这是我的代码:

    import { Component, Input } from "@angular/core";
    import { Title } from "./components/title";
    import { Timeline } from "./components/timeline";
    
    @Component({
      selector: "edu",
      template: `
                <div id="Edu" class="Edu content section scrollspy">
                  <title [icon]="titleIcon" [title]="titleTitle"></title>
                  <timeline [data]="edu"></timeline>
                </div>
                `,
      directives: [Title, Timeline]
    })
    
    export class Edu {
      private titleIcon = "graduation-cap";
      private titleTitle = "Education";
      @Input("data") edu: Array<Object>;
    }
    

    我看不出我的代码有什么错误,它过去也可以工作。谁能看出这有什么问题吗?

    注意:我正在使用Angular2-rc6和TypeScript 1.8.10,希望这些信息有帮助

    2 回复  |  直到 9 年前
        1
  •  26
  •   j2L4e    9 年前

    directives 已弃用并删除。 Time Timeline 应该放在你的 @NgModule 立即声明:

    @NgModule({
      declarations: [Time, Timeline, ...],
      ...
    })
    
        2
  •  4
  •   Venkatt Guhesan    9 年前
    #--------------app.module.ts
    import { NgModule }      from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    
    import { AppComponent } from './app.component';
    import { Time} from './Time.component'
    import { Timeline} from './Timeline.component'
    
    @NgModule({
      imports:      [ BrowserModule ],
      declarations: [ AppComponent, TimeComponent, TimelineComponent ],
      bootstrap:    [ AppComponent ]
    })
    export class AppModule { }
    
    #--------------app.component.ts
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'my-app',
      template: `<h1>{{title}}</h1>
      <time></time>
      <timeline></timeline>
      `
    })
    export class AppComponent {
      title = 'My Title';
    }
    
    #--------------time.component.ts
    import { Component } from '@angular/core';
    @Component({
      selector: 'time',
      template: `<p>Do Something With Time Here</p>`
    })
    export class TimeComponent {
    
    }
    #--------------timeline.component.ts
    import { Component } from '@angular/core';
    @Component({
      selector: 'timeline',
      template: `<p>Do Something With Timeline Here</p>`
    })
    export class TimelineComponent {
    
    }
    
    推荐文章