web-dev-qa-db-fra.com

Mise à niveau Angular2 RC6

après la mise à jour de mon projet avec RC6, les erreurs suivantes se produisent:

Error: TypeScript found the following errors:
  app.component.ts (12, 3): Argument of type '{ moduleId: string; selector: string; templateUrl: string; styleUrls: string[]; directives: (type...' is not assignable to parameter of type 'ComponentMetadataType'.
  Object literal may only specify known properties, and 'directives' does not exist in type 'ComponentMetadataType'.

app.component.ts

import {Component, OnInit} from '@angular/core';
import {NavbarComponent} from "./shared/navbar/navbar.component";
import {ROUTER_DIRECTIVES} from "@angular/router";
import {SidebarComponent} from "./shared/sidebar/sidebar.component";
import {FooterComponent} from "./shared/footer/footer.component";

@Component({
  moduleId: module.id,
  selector: 'app-root',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css'],
  directives: [NavbarComponent, SidebarComponent, FooterComponent, ROUTER_DIRECTIVES]
})
export class AppComponent implements OnInit {

  ngOnInit(): any {
    return undefined;
  }

}

Cela prend un peu de temps, mais je ne peux pas le comprendre.

7
ulou

Directives et pipes doivent être définis dans @NgModule Si je lis correctement. La prise en charge à l'intérieur de @Component est supprimée.

Alors oui, déplacez simplement vos directives dans le NgModule

Au moment où vous avez: Composant A avec les directives Ac et Composant B avec les directives Bc et probablement un AppModule, il vous suffit de déplacer Ac et Bc dans le AppModule. Et oui, vous devez les supprimer de la déclaration @Component

Les directives seront alors immédiatement disponibles dans les composants définis dans votre module.


Exemple de OP devient:

app.component.ts

// imports...
@Component({
  selector: 'app-root',
  templateUrl: 'app.component.html',
})
export class AppComponent {}

app.module.ts

// imports...
@NgModule({
  declarations: [
    AppComponent,
    NavbarComponent, 
    SidebarComponent, 
    FooterComponent
  ],
  imports: [
    BrowserModule,
    CommonModule,
    FormsModule
  ],
  providers: [
               //MyService, MyOtherService
             ],
  entryComponents: [AppComponent],
  bootstrap: [AppComponent]
})
export class AppModule {}

Voir la documentation du routeur : documentation du routeur

17
Ced

directives et pipes doivent être définis dans vos déclarations @NgModule depuis RC6. Supprimez-les de votre décorateur @Component.

5
j2L4e

Pour Angular 2 version finale 2.0.0.0

le tuyau doit être déclaré dans la section de déclaration du fichier app.module.ts

import {KeysPipe} from './keys.pipe';

@NgModule({
  imports:      [ BrowserModule, FormsModule, HttpModule ],
  declarations: [ AppComponent, LoginComponent,ArticleComponent,**KeysPipe** ],
  bootstrap:    [ AppComponent, LoginComponent,ArticleComponent ],


})

il suffit d'observer l'implémentation de la clé dans les extraits de code ci-dessus.

2
Hetal Sagar