Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 6 CLI工作区。如何创建导出服务的库_Angular_Angular Cli - Fatal编程技术网

Angular 6 CLI工作区。如何创建导出服务的库

Angular 6 CLI工作区。如何创建导出服务的库,angular,angular-cli,Angular,Angular Cli,背景: Angular CLI 6引入了工作空间的概念 一个工作区可以包含多个项目 工作区和项目的配置位于工作区根文件夹中的“angular.json”文件中 每个项目可以是应用程序或库 CLI可以使用以下命令生成作为库的项目: 此命令创建类型为的项目 带有组件和服务的“库”,并导出组件 问题: 我试图创建一个库,并使其中的服务可用于需要它们的应用程序,但没有成功 此代码不起作用: 从'@angular/core'导入{NgModule}; 从“./forms lib.component

背景:

  • Angular CLI 6引入了工作空间的概念
  • 一个工作区可以包含多个项目
  • 工作区和项目的配置位于工作区根文件夹中的“angular.json”文件中
  • 每个项目可以是应用程序或库
  • CLI可以使用以下命令生成作为库的项目:
  • 此命令创建类型为的项目 带有组件和服务的“库”,并导出组件
问题:

我试图创建一个库,并使其中的服务可用于需要它们的应用程序,但没有成功

此代码不起作用:

从'@angular/core'导入{NgModule};
从“./forms lib.component”导入{FormsLibComponent};
从“./forms lib.service”导入{FormsLibService};
@NGD模块({
进口:[],
声明:[FormsLibComponent],
导出:[FormsLibComponent,FormsLibService],
})
导出类FormsLibModule{
}
返回错误:

Uncaught Error: Can't export value FormsLibService from FormsLibModule
as it was neither declared nor imported!
有人能给我指出正确的方向吗


谢谢。

这可能会对您有所帮助:

从'@angular/core'导入{NgModule,ModuleWithProviders};
从“./forms lib.component”导入{FormsLibComponent};
从“./forms lib.service”导入{FormsLibService};
@NGD模块({
声明:[FormsLibComponent],
导出:[FormsLibComponent],
})
导出类FormsLibModule{
static forRoot():ModuleWithProviders{
返回{
ngModule:FormsLibModule,
提供者:[FormsLibService]
};
}
}

您似乎错过了在模块上的提供商阵列中添加服务

@NgModule({
进口:[],
提供者:[FormsLibService],
声明:[FormsLibComponent,FormsLibService],
导出:[FormsLibComponent,FormsLibService],
})

通过将一些代码添加到
public_api.ts
中,可以添加要从库中导出的服务

首先在angular应用程序中找到
projects/nameOfLibProject/src/public_api.ts
,然后添加

export * from './lib/locationOf/your.service';

我知道我参加聚会迟到了,但为了将来的参考: 我通过以下方式解决了我的问题:

  • ng构建表单slibmodule
  • 将库的模块添加到目标模块和组件文件中,如下所示:
  • 从'forms lib'导入{FormsLibModule}


    注意:VS代码将此导入显示为错误,但这并不重要,因为它编译得很好。不要尝试对此导入使用自动导入,因为它未在此处列出。

    考虑到在angular 8下创建库,我们需要在public\u api.ts中导出服务
    export*from./lib/components/spinner/spinner.service'

    我的问题是: 在import语句中,我选择了(Webstorm)autocomplete给我的,大致相当于

    import {FormsLibModule} from 'forms-lib/lib/forms-lib.module';
    
    相反,我只能使用库名称:

    import {FormsLibModule} from 'forms-lib';
    

    (注意:我有一个包含库以及测试它的应用程序的工作区)

    cli提供的默认库模板包含一个带有
    @Injectable({providedIn:'root'})
    的服务,这似乎意味着您不需要在库级别或应用程序模块上提供此服务(如果您需要)。它只是工作!我们正在讨论在angular library中创建服务并从中导出。不是关于图书馆模块。这对我来说也很好。使用VSCode的诀窍是创建一个
    exports.module.ts
    文件,并从“forms lib”添加
    export{FormsLibService}
    并在导入时使用它。它将在VSCode上显示为错误,但仅在此文件中显示。在模块中导出服务时出错。仅允许使用上述解决方案导出组件、模块、管道和指令。对于导出服务,我们需要在public_api.ts中有import语句据我所知,您不需要导出服务,只需将其包含在模块中的providers数组中(正如您已经在做的那样)现在通过导入定义了服务的模块在应用程序或其他模块中使用它。您无法导出服务。此解决方案将不起作用。我试过了。但在public_api.ts中导入语句的工作原理与我尝试的方法相同(在public_api.ts中添加我的服务),但当我尝试在我的服务中使用函数时,会出现错误this.mySvc.myFunction不是function@elesh.j你导入服务了吗?这里是我使用的
    从'@myLib/commons ng core'导入{AlertsService}
    还要确保lib在package.json中
    import {FormsLibModule} from 'forms-lib';