我已经在Angular项目中分离了库。该库具有服务-dist
-js
|-script.js
-libs
-node_modules
-public
-src
|-assets
| |-imagen.jpg
|-components
|-App.vue
|-main.js
。
MapLibraryService
它已在库模块中注册:
import { ReonMapApi } from "./map-api";
export class MapLibraryService {
private readonly mapConfig = { key: "k123456_78" };
}
在其他零件应用程序中,我尝试获取此服务的实例:
@NgModule({
declarations: [MapLibraryComponent, MenuToolsComponent],
imports: [],
exports: [MapLibraryComponent],
providers: nMapLibraryService]
})
export class MapLibraryModule {}
它返回了我另一个MapLibraryService实例
答案 0 :(得分:3)
如果您使用的是Angle 9 Release候选版本,则可以使用平台注入器, 它将提供页面上所有应用程序共享的特殊单例。
@Injectable({
providedIn: 'platform'
})
答案 1 :(得分:2)
您应使用@Injectable装饰服务类
@Injectable({
providedIn: 'root'
})
export class MapLibraryService {
private readonly mapConfig = { key: "k123456_78" };
}
答案 2 :(得分:2)
如果我对您的理解正确,则需要使用
装饰服务@Injectable({
providedIn: 'root',
})
Read more about singletons here
也请检查有关providerIn的答案:“ platform”,但这取决于您应用的角度版本。
答案 3 :(得分:1)
使服务在角度上成为全局的两种方法。
1)在您的服务中添加一行
@Injectable({
providedIn: 'root',
})
export class MapLibraryService {
private readonly mapConfig = { key: "k123456_78" };
}
OR
2)在app.module.ts
中注册服务:
providers: [MapLibraryService]