在使用 AngularJS 1.x 框架开发 2 年后,我目前正在学习 Angular 框架(第 5 版),所以我问了自己很多问题,其中一个是正确导入由另一个模块提供的服务的方法我的申请。
假设我有一个CoreModule
提供MyService
服务的示例,假设该项目具有以下文件树:
app/
app.module.ts
...
pages/
clients/
clients.component.html
clients.component.css
clients.component.ts
...
core/
core.module.ts
providers/
my-service.service.ts
现在假设我的clients
页面需要从模块中注入MyService
服务。CoreModule
为此,我将放入模块MyService
的提供者列表中CoreModule
。我将CoreModule
在我的AppModule
.
如果我很好理解,通过进行这样的导入,我会告诉我的应用程序MyService
在模块的 .ts 文件中需要它时使用该服务AppModule
。
但我无法理解的是在我的应用程序代码中包含声明服务的 .ts 文件。事实上,如果我想使用该MyService
服务,我会在Clients
课堂上做类似的事情:
constructor(private service: MyService) {
// using of the injected service
}
但是 TypeScript 需要引用声明服务的 .ts 文件。我的第一次尝试是按照文件树导入文件:
import { MyService } from '../../core/providers/my-service.service';
但这对我来说感觉不对,因为当我导入 Angular 服务时,我不必指定访问声明相关服务的文件的路径。服务示例HttpClient
:
import { HttpClient } from '@angular/common/http';
实际上,我希望能够通过引用模块而不是传递 .ts 文件的路径来在我的应用程序页面中导入我的核心服务。
那时,我什至不知道这是否可能,或者我是否误解了其他模块中服务的使用。