我想将管道模块导入我的应用
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: [],
};
}
}
这是我的管道模块
在我的 的 app.module.ts
imports: [
...,
PipeModule.forRoot()
我像这样导入它,我收到此错误
Unexpected value '[object Object]' imported by the module 'AppModule
答案 0 :(得分:13)
我得到了同样的错误(这是非常通用的),但出于完全不同的原因。
我的解决方案无法解决原始问题,但无论如何我都在这里写,以防有人遇到同样的问题:
在我的单元测试中,我意外地在provider
数组中声明了imports
对象而不是providers
数组。这导致了这个问题。
答案 1 :(得分:0)
您的班级PipeModule
未使用@NgModule
装饰器进行装饰 - 因此它不是模块。因此,无法导入AppModule
- 只允许导入@NgModules
。
根据您正在做的事情,您的第一个代码示例只是创建一个标准的Angular管道,因此请将该类的名称更改为ValuesPipe
,以免误导。< / p>
此时,您有两种选择:您可以在ValuesPipe
中声明新的AppModule
,也可以创建一个全新的NgModule
来存储新的ValuesPipe
和然后将新NgModule
导入您的AppModule
。
请注意,在下面的两个选项中,我们假设您已将第一个示例中的课程重命名为ValuesPipe
。
所以,选项1:
在 app.module.ts ,
中declarations: [
.....,
ValuesPipe,
]
或选项2:
创建一个新类 PipeModule ,如下所示:
@NgModule({
imports: CommonModule, (from @angular/core)
declarations: ValuesPipe,
})
export class PipeModule { }
然后,在 app.module.ts ,
imports: [
......,
PipeModule
]