Javascript 如何从组件初始化角度服务、自定义类?
我用 我的应用程序已将引导组件作为MapComponent。 还有一个包含所有域逻辑的核心类Javascript 如何从组件初始化角度服务、自定义类?,javascript,angular,typescript,Javascript,Angular,Typescript,我用 我的应用程序已将引导组件作为MapComponent。 还有一个包含所有域逻辑的核心类MapCore: class MapCore { constructor(props: Props) { // Config here } } 这个核心类应该在整个应用程序中共享。所以我可以使它可注射并在根中注册 我需要从组件中手动配置此类,例如,因此我使用它的方式如下: @Component({ selector: 'map-root', templateUrl: '
MapCore
:
class MapCore {
constructor(props: Props) {
// Config here
}
}
这个核心类应该在整个应用程序中共享。所以我可以使它可注射并在根中注册
我需要从组件中手动配置此类,例如,因此我使用它的方式如下:
@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">
我的问题是,在我的情况下,如何配置服务?它是来自组件的新MapCore
自定义类,并在应用程序之间共享
您能分享一下您的到期日如何解决这个问题吗?我想您可以使用
@Injectable
轻松地做到这一点。为此,您可以更新名为MapCore
的类,如下所示
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
class MapCore {
constructor(props: Props) {
// Config here
}
}
它将在整个Angular应用程序中提供您的类,您可以像下面一样从任何组件使用它=>
export class YourComponent {
constructor(private mapCore : MapCore ){}
}
有帮助吗?没有,因为如果我使用providedIn:root,它会创建一个实例新的MapCore
,外部没有属性。因此,用户无法自行配置地图。。什么样的?我不确定你的意图到底是什么我不确定,在这种情况下,我需要获取输入组件参数,然后将它们添加到配置提供程序,然后使用此提供程序调用映射类。与我现在遇到的情况相同,您是否捆绑了angular应用程序,在该应用程序中定义了自定义元素,并在另一个应用程序中使用(通过在脚本标记中包含.js文件)该捆绑包来使用自定义元素?问题是,injectable创建了一个类的实例,而该类已经没有了诸如newMapCore()
之类的属性。但我需要将配置对象从组件输入传递到外部。所以我需要注射,但不是用于初始化。仅用于在appSo之间共享,映射应在组件外部、自定义Anguler元素(组件)@Jessy中进行配置,其中class
您需要在核心类内部传递config:new MapCore(this.props)代码>用于完全初始化在您的情况下,将在不进行任何配置的情况下加载映射。所以我得到了结果实例新MapCore
,没有用户配置(道具在外面);