Angular 图书馆如何使服务全球化?

Angular 图书馆如何使服务全球化?,angular,angular8,Angular,Angular8,我在角项目中分离了库。此库具有服务MapLibraryService import { ReonMapApi } from "./map-api"; export class MapLibraryService { private readonly mapConfig = { key: "k123456_78" }; } 已在库的模块中注册: @NgModule({ declarations: [MapLibraryComponent, MenuToolsComponent],

我在角项目中分离了库。此库具有服务
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 {}
在另一部分应用程序中,我尝试获取此服务的实例时:

export class MapControlsComponent implements OnInit {
  constructor(private reonMapLibraryService: MapLibraryService) {
}

它返回了MapLibraryService的另一个实例

您应该用


你应该在你的服务课上用


如果我理解正确,你需要用

@Injectable({
  providedIn: 'root',
})


另外,请检查“平台”中提供的答案,但这取决于应用程序的角度版本。

如果我理解正确,您需要使用

@Injectable({
  providedIn: 'root',
})


另外,请检查“平台”中提供的答案,但这取决于应用程序的角度版本。

如果您使用的是角度9候选版本,则可以使用平台注入器, 这将提供由页面上所有应用程序共享的特殊单例

@Injectable({
  providedIn: 'platform'
})

如果您使用的是angular 9 release候选版本,则可以使用平台注入器, 这将提供由页面上所有应用程序共享的特殊单例

@Injectable({
  providedIn: 'platform'
})

两种方法可以使服务在角度上全球化

1) 在您的服务中添加一行

@Injectable({
  providedIn: 'root',
})

export class MapLibraryService {
  private readonly mapConfig = { key: "k123456_78" };

}

2) 在
app.module.ts
中注册服务:

providers: [MapLibraryService]

有两种方法可以使服务在角度上全局化

1) 在您的服务中添加一行

@Injectable({
  providedIn: 'root',
})

export class MapLibraryService {
  private readonly mapConfig = { key: "k123456_78" };

}

2) 在
app.module.ts
中注册服务:

providers: [MapLibraryService]


但在这种情况下,服务将是在图书馆的singltone,而不是在整个项目中。但我需要在Angular内的另一个项目中获得该库的实例,但在这种情况下,服务将是singltone在库中,而不是在整个项目中。但我需要在AngularI内部的另一个项目中获取此库的实例。我认为您必须在
AppModule
中导入库模块。但是,为了使其服务在全球范围内可用,您有两种选择:要么使用
@Injectable({providedIn:'root'})
,要么使用
MapLibraryModule.forRoot()
。更多关于第二种方法。您使用的是angular的哪个版本?我想看看复制,因为对我来说,它们应该得到相同的实例。您必须在应用程序中导入
MapLibraryModule
,对吗?我想您必须在
AppModule
中导入库模块。但是,为了使其服务在全球范围内可用,您有两种选择:要么使用
@Injectable({providedIn:'root'})
,要么使用
MapLibraryModule.forRoot()
。更多关于第二种方法。您使用的是angular的哪个版本?我想看看复制,因为对于我来说,它们应该得到相同的实例。您必须在应用程序中导入
MapLibraryModule
,对吗?但在这种情况下,服务将是库中的singltone,而不是整个项目中的singltone。但是我需要在Angular内部的另一个项目中获取这个库的实例,这告诉Angular在应用程序根目录中提供服务。因此,它将在整个应用程序中可用,在声明的地方。我已经尝试过,它只在库范围内工作,而不是在“平台”中提供,如果您使用angular 9,但在这种情况下,服务将是库中的SingleOne,而不是整个项目中的SingleOne。但是我需要在Angular内部的另一个项目中获取这个库的实例,这告诉Angular在应用程序根目录中提供服务。因此,它将在整个应用程序中可用,在声明的位置。我已经尝试过,它只在库范围内有效,而不是在“平台”中提供的外部。如果您使用angular 9Where platform,它是项目名称?不,它是一个注入器,与Root相同。您是否获得了我需要的,我需要从library Angular到componentLet us中应用程序的另一部分的共享服务。它是什么平台?它是项目名称?不,它是一个注入器,与Root相同。你得到我需要的东西了吗,我需要从库Angular到componentLet我们中应用程序的另一部分的共享服务。你不明白我需要Angular中两个项目libs的全局服务。你能告诉我更多信息吗。我不明白你的要求。你不明白我需要在安圭拉的两个项目LIB中提供全球服务。你能告诉我更多关于这方面的信息吗。我不明白你的要求。