2017-08-09 1 views
1

J'ai un component simple comme ceci:Erreur lors de la création de composants avec le constructeur argument

@Component({ 
    selector: 'error-handler', 
    templateUrl: './error-handler.component.html', 
    styleUrls: ['./error-handler.component.css'] 
}) 
export class ErrorHandlerComponent { 

    constructor(public error?: any) { } 
} 

et quand je vais au navigateur je reçois une erreur:

Uncaught Error: Can't resolve all parameters for ErrorHandlerComponent: (?). 

J'enregistrer mon nouveau component dans module donc je ne sais pas pourquoi cette erreur se produit. Je n'appelle pas le constructeur de n'importe où pour le moment.

+0

supprimer 'erreur publique? : N'importe lequel de votre constructeur et mettez-le dans la classe comme une variable. – Faisal

+0

@Faisal n'aide pas – Aryjadna

+1

alors nous avons besoin de plus d'informations sur votre code – Faisal

Répondre

0

Les paramètres de constructeur d'un composant (ou d'une directive, d'un canal ou d'un service) tenteront d'être injectés par l'injecteur de dépendances. Changer votre composant à ceci:

@Component({ 
    //... 
}) 
export class ErrorHandlerComponent { 

    public error: any 

    constructor() {} 
} 

Ou utilisez le @Optional() décorateur:

@Component({ 
    //... 
}) 
export class ErrorHandlerComponent { 

    public error: any 

    constructor(@Optional()public error?: any) {} 
} 

En option ne fonctionne pas lorsque votre type est any

+0

J'ai le même problème et après vos changements j'ai toujours les mêmes erreurs – bielas

+0

N'aide pas ... – Aryjadna

+1

@Aryjadna en fonction de votre code, ce sont les seules solutions. Où le premier est préférable, parce que vous ne seriez jamais capable d'injecter un «tout» comme ça. Ma suggestion est que vous alliez regarder un peu plus sur les guides fournis à https://angular.io. Ou assurez-vous que les modifications que j'ai suggérées sont réellement traitées dans votre projet – PierreDuc