Javascript 意外值';运输数据&x27;由模块';CoreModule';。请添加@Pipe/@Directive/@组件注释。在第八节
我在angular 8中的Javascript 意外值';运输数据&x27;由模块';CoreModule';。请添加@Pipe/@Directive/@组件注释。在第八节,javascript,angular,typescript,Javascript,Angular,Typescript,我在angular 8中的CoreModule中创建了一个服务: @Injectable({ providedIn:'root' }) export class TransportData { private stringData: BehaviorSubject<string> = new BehaviorSubject(null); data$ = this.stringData.asObservable(); constructor() {
CoreModule
中创建了一个服务:
@Injectable({
providedIn:'root'
})
export class TransportData {
private stringData: BehaviorSubject<string> = new BehaviorSubject(null);
data$ = this.stringData.asObservable();
constructor() { }
setStringValue(value: string): void {
this.stringData.next(value);
}
}
现在我需要在其他组件中使用它:
注册表组件
和活动组件
在activation.module
中,我使用以下命令:
@NgModule({
declarations: [ActivetionCodeComponent],
imports: [
CommonModule,
ActivationCodeRoutingModule,
SharedModule,
CoreModule,
ReactiveFormsModule
],
exports:[ActivetionCodeComponent]
})
export class ActivationCodeModule { }
在activeioncomponent:
constructor(private formBuilder: FormBuilder , private activetionCodeService:ActivetionCodeService , private transpostData: TransportData) {
this.intialForm();
}
ti显示此错误:
模块“CoreModule”声明的意外值“TransportData”。请添加@Pipe/@Directive/@组件注释
当你有
@Injectable({
providedIn:'root'
})
您不需要将其添加到CoreModule。该服务将在应用程序中提供以供使用
默认情况下,此装饰器在属性中有一个providedIn,该属性为服务创建一个提供者。在这种情况下,“根”中提供的指定Angular应在根注入器中提供服务
但是,如果您选择不在根目录中提供它,您可以将它添加到CoreModule
的providers
您可以将TransportData
更改为使用:
@Injectable({
providedIn: CoreModule,
})
并在核心模块内使用相同的代码:
@NgModule({
providers: [TransportData],
})
查看官方指南,了解它显示了以下错误:在初始化之前无法访问“CoreModule”
您的AppModule是否使用CoreModule?使用NgModule
,我认为现在的方法是创建一个包含服务类的CoreModule
,并在模块的提供者中列出服务。然后,您在主应用程序模块中导入核心模块,该模块将向在其构造函数中请求该类的任何子级提供一个实例。i dot his但显示以下错误:无法在初始化之前访问“CoreModule”
,如果无法在服务中指定应提供该模块,您还可以在CoreModule中声明服务的提供程序:providers:[TransportData],
查看此链接以获取实时eaxample:
@NgModule({
providers: [TransportData],
})