可以使用angular cli生成服务并将其添加为app.module.ts中的服务提供者,只需一步,或者使用ng g命令中的特殊选项?
当执行时:
$ ng g service services/backendApi
installing service
create src/app/services/backend-api.service.spec.ts
create src/app/services/backend-api.service.ts
WARNING Service is generated but not provided, it must be provided to be used
在它旁边(根据警告消息),我通常使用文本编辑器将它添加到app.module.ts上的provider部分:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
....
],
providers: [BackendApiService],
bootstrap: [AppComponent]
})
有可能只需一步就可以实现自动化吗?
发布于 2017-03-13 20:01:43
实际上,可以在创建服务时提供服务(或防护,因为这也需要提供)。
命令如下所示...
ng g s services/backendApi --module=app.module
编辑
也可以提供给一个功能模块,你也必须给它提供你想要的模块的路径。
ng g s services/backendApi --module=services/services.module
发布于 2018-05-18 15:48:45
Angular 6+单例服务
Angular 6及更高版本的单例服务的recommended approach为:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class UserService {
}
实际上,CLI --module
开关用于在app
级别注册服务的doesn't even exist any more,因为它不再需要修改app.module.ts
。
这将创建上述代码,而不需要指定模块。
ng g s services/user
因此,如果你不想让你的服务成为单例(),你必须自己删除providedIn
代码--然后手动将它添加到组件或延迟加载模块的providers
中。看起来当前没有切换到不生成providedIn: 'root'
部件,所以您需要手动删除它。
发布于 2017-12-14 06:33:02
指定路径
--app
--one
one.module.ts
--services
--two
two.module.ts
--services
使用模块ONE中的新文件夹创建服务
ng g service one/services/myNewServiceFolderName/serviceOne --module one/one
--one
one.module.ts // service imported and added to providers.
--services
--myNewServiceFolderName
serviceOne.service.ts
serviceOne.service.spec.ts
https://stackoverflow.com/questions/42748773
复制相似问题