Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从组件初始化角度服务、自定义类?_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 如何从组件初始化角度服务、自定义类?

Javascript 如何从组件初始化角度服务、自定义类?,javascript,angular,typescript,Javascript,Angular,Typescript,我用 我的应用程序已将引导组件作为MapComponent。 还有一个包含所有域逻辑的核心类MapCore: class MapCore { constructor(props: Props) { // Config here } } 这个核心类应该在整个应用程序中共享。所以我可以使它可注射并在根中注册 我需要从组件中手动配置此类,例如,因此我使用它的方式如下: @Component({ selector: 'map-root', templateUrl: '

我用

我的应用程序已将引导组件作为MapComponent。 还有一个包含所有域逻辑的核心类
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创建了一个类的实例,而该类已经没有了诸如new
MapCore()
之类的属性。但我需要将配置对象从组件输入传递到外部。所以我需要注射,但不是用于初始化。仅用于在appSo之间共享,映射应在组件外部、自定义Anguler元素(组件)@Jessy中进行配置,其中
class
您需要在核心类内部传递config:
new MapCore(this.props)用于完全初始化在您的情况下,将在不进行任何配置的情况下加载映射。所以我得到了结果实例
新MapCore
,没有用户配置(道具在外面);