javascript - 如何从组件初始化Angular服务,自定义类?
问题描述
我使用Angular 元素
我的应用程序将引导组件作为 MapComponent。还有一个MapCore
包含所有域逻辑的核心类:
class MapCore {
constructor(props: Props) {
// Config here
}
}
这个核心类应该在整个 Angular 应用程序中共享。所以我可以让它可注入并在root中注册。
我需要从组件手动配置此类,因此我使用它:
@Component({
selector: 'map-root',
templateUrl: './map.component.html',
styleUrls: ['./map.component.scss']
})
export class MapComponent {
@Input() props: Props;
@Input() center: Center;
ngOnInit() {
this.map = new MapCore(this.props);
}
}
我需要它,因为当我得到自定义元素的结果时,我可以将参数传递给标记以配置地图:
<map-root center="56,90" props="props">
我的问题是,在我的情况下,如何配置服务是new MapCore
来自组件的自定义类并在应用程序之间共享?
你能分享你的经验如何解决这个问题吗?
解决方案
我认为您可以使用@Injectable
. 为此,您可以更新您的class
姓名MapCore
,如下所示
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
class MapCore {
constructor(props: Props) {
// Config here
}
}
它将在整个 Angular 应用程序中使用您的类,您可以像下面那样从任何组件中使用它=>
export class YourComponent {
constructor(private mapCore : MapCore ){}
}
推荐阅读
- java - 获取接口的实现对象实例
- java - Getter/Setter 与其他数据对象类之间的区别
- swiftui - 如何为选中/未选中使用不同的选项卡项?
- c++ - 如何将范围解析运算符用于模板类中的嵌套类?
- bootstrap-5 - bootstrap 5 有内置的水平线吗?
- boost-python - 使用vcpkg时如何定义boost python版本?
- c# - 我的 get 方法有错误,它显示 404 错误 .net 核心和角度
- visual-studio - 在我的设备上显示其他 dart 文件的问题
- python - 如何在环形射击目标上定位轮廓
- visual-studio-code - 在我按 ctrl + S 后,它在我的代码顶部添加 ()