Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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/2/spring/13.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
Angular @NgModule的构造函数中应该有代码吗?如果有,原因是什么?_Angular_Design Patterns_Ng Modules - Fatal编程技术网

Angular @NgModule的构造函数中应该有代码吗?如果有,原因是什么?

Angular @NgModule的构造函数中应该有代码吗?如果有,原因是什么?,angular,design-patterns,ng-modules,Angular,Design Patterns,Ng Modules,可以在加载模块时执行此操作并运行代码: import { NgModule } from '@angular /core'; @NgModule({...}) export class SomeNgModule { constructor(providedService: ProvidedService) { providerService.iCanDoThis('?'); } } 但如果我想初始化代码,我是否应该使用APP\u初始化器或其他钩子 我找不到一个很好的理

可以在加载模块时执行此操作并运行代码:

import { NgModule } from '@angular /core';

@NgModule({...})
export class SomeNgModule {
  constructor(providedService: ProvidedService) {
        providerService.iCanDoThis('?');
  }
}
但如果我想初始化代码,我是否应该使用
APP\u初始化器
或其他钩子

我找不到一个很好的理由来解释什么时候这是一个很好的用途,以及它会有什么帮助


另一个很好的问题可能是:在Angular的应用程序生命周期中何时执行此代码?

在这种情况下,我使用这种注入方式,希望在自定义类中使用Angular服务,但无法直接将其注入构造函数中。因此,我需要一个
Injector
的实例

import {Injector, NgModule} from '@angular/core';

export let InjectorInstance: Injector;


@NgModule({
  /* *** */
})
export class FeatureModule {
  constructor(private injector: Injector) {
    InjectorInstance = this.injector;
  }
}
然后在我的自定义类中使用它注入角度服务,如下所示:

import {InjectorInstance} from 'pat-to-feature-module';


export class MyCustomClass{

  getHttpService = () => {
    return InjectorInstance.get<HttpClient>(HttpClient);
  };
}
从“pat到功能模块”导入{InjectorInstance};
导出类MyCustomClass{
getHttpService=()=>{
返回InjectorInstance.get(HttpClient);
};
}

通过这种方式,我确保使用(注入)Angular创建的服务。也许还有其他方法可以使用此功能。

我在这个场景中使用这种注入方式,我想在自定义类中使用Angular service,但我无法将其直接注入构造函数中。因此,我需要一个
Injector
的实例

import {Injector, NgModule} from '@angular/core';

export let InjectorInstance: Injector;


@NgModule({
  /* *** */
})
export class FeatureModule {
  constructor(private injector: Injector) {
    InjectorInstance = this.injector;
  }
}
然后在我的自定义类中使用它注入角度服务,如下所示:

import {InjectorInstance} from 'pat-to-feature-module';


export class MyCustomClass{

  getHttpService = () => {
    return InjectorInstance.get<HttpClient>(HttpClient);
  };
}
从“pat到功能模块”导入{InjectorInstance};
导出类MyCustomClass{
getHttpService=()=>{
返回InjectorInstance.get(HttpClient);
};
}

通过这种方式,我确保使用(注入)Angular创建的服务。可能还有其他方法可以使用此功能。

加载模块时将执行代码。看看这个类似的问题:回答我自己的第二个问题:。虽然版本很旧,但我认为它仍然可以正常工作(?)加载模块时代码将被执行。看看这个类似的问题:回答我自己的第二个问题:。虽然版本很旧,但我认为它仍然可以正常工作(?)为什么不把MyCustomClass变成一个角度服务,让DI处理HttpClient?嗯,也许我从来没有遇到过实例化类需要这样做的情况。假设我有30多个这样的自定义类,它们都是实体。(用户、代币、产品、客户等)。然后我需要能够将API响应映射到这些类。所以我不希望它们成为服务(可注入),因为我不注入它们。正如我所说,我不确定这是否是最正确的方法,但它确实满足了我在这方面的需要。为什么不将MyCustomClass变成一个角度服务,让DI处理HttpClient呢?嗯,也许我从来没有遇到过实例化类需要这样做的情况。假设我有30多个这样的自定义类,它们都是实体。(用户、代币、产品、客户等)。然后我需要能够将API响应映射到这些类。所以我不希望它们成为服务(可注入),因为我不注入它们。正如我所说,我不确定这是否是最正确的方法,但它确实满足了我在这方面的需要。