2017-03-28 3 views
2

Ich möchte Rohrmodul meiner App importieren,Unerwarteter Wert '[object Object]' durch das Modul 'AppModule' importiert

import { NgModule } from '@angular/core'; 
import { PipeTransform, Pipe } from '@angular/core'; 

@Pipe({ name: 'values', pure: false }) 
export class PipeModule implements PipeTransform { 
    transform(value: any, args: any[] = null): any { 
    return Object.keys(value).map(key => value[key]); 
    } 

    static forRoot() { 
     return { 
      ngModule: PipeModule, 
      providers: [], 
     }; 
    } 
} 

dieses Modul meine Pfeife ist

an meinem App. module.ts

imports: [ 
    ..., 
    PipeModule.forRoot() 

ich importiere es so und ich erhalte diese Störung

Unexpected value '[object Object]' imported by the module 'AppModule 

Antwort

0

Ihre Klasse PipeModule ist nicht mit dem Dekorateur @NgModule dekoriert - also kein Modul. Daher kann es nicht in Ihre AppModule importiert werden - nur @NgModules dürfen importiert werden.

Basierend auf dem, was Sie tun, ist Ihr erstes Codebeispiel nur ein Standard-Winkelrohr zu erstellen, also ändern Sie den Namen der Klasse in etwas wie ValuesPipe, so dass es nicht irreführend ist.

An diesem Punkt haben Sie zwei Möglichkeiten: Sie Ihren neuen ValuesPipe in AppModule erklären können, oder Sie können eine ganz neue NgModule erstellen Sie Ihre neue ValuesPipe zu speichern und importieren dann, dass neue NgModule in Ihr AppModule.

Bitte beachten Sie, dass ich in beiden Optionen unten angenommen habe, dass Sie die Klasse in Ihrem ersten Beispiel in ValuesPipe umbenannt haben.

so, Option 1:

in app.module.ts,

declarations: [ 
    ....., 
    ValuesPipe, 
] 

Oder Option 2:

erstellen Sie eine neue Klasse PipeModule wie suchen :

@NgModule({ 
    imports: CommonModule, (from @angular/core) 
    declarations: ValuesPipe, 
}) 
export class PipeModule { } 

Und dann, in app.module.ts,

imports: [ 
    ......, 
    PipeModule 
] 
+0

danke für die klare antwort! Ich bin mit dem Deklarationsteil gegangen, den ich leichter umsetzen konnte –

6

Ich habe den gleichen Fehler (die sehr allgemein gehalten ist), aber für einen ganz anderen Grund.

Meine Lösung wird nicht die ursprüngliche Frage lösen, aber ich schreibe es hier sowieso, falls jemand hat das gleiche Problem:

In meiner Unit-Tests, ich zufällig wurde ein provider Objekt innerhalb des imports Array deklarieren statt die providers eins. Das verursachte das Problem.

Verwandte Themen