gpt4 book ai didi

angular - 配置的 InjectionToken 不适用于 AoT

转载 作者:太空狗 更新时间:2023-10-29 18:30:10 28 4
gpt4 key购买 nike

我正在编写一个 Angular 库,我需要在其中在模块导入的 .forRoot() 中传入一个配置对象。

我正在尝试使用 InjectionToken 执行此操作(显然是正确的方法),但出现 AoT 编译错误。

使用 AoT 编译时出错:

error TS4050: Return type of public static method from exported class has or is using name 'InjectionToken' from external module "/path/to/node_modules/@angular/core/src/di/injection_token" but cannot be named.

感谢任何帮助。

模块.ts:

import { NgModule } from '@angular/core';
import { CONFIG, Config } from './config';

@NgModule({ ... })
export class SomeModule {
static forRoot(config?: Config) {
return {
ngModule: SomeModule,
providers: [
{ provide: CONFIG, useValue: config }
]
};
}
}

config.ts:

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

export const CONFIG = new InjectionToken<Config>('config');

export interface Config {
some?: string;
values?: string;
here?: string;
}

其他应用程序的预期用途:

import { NgModule } from '@angular/core';
import { SomeModule } from 'some-library';

@NgModule({
imports: [
SomeModule.forRoot({
// <-- config values here
})
]
})

( Angular 5, typescript 2.6.2)

最佳答案

JB Nizet 在上面的评论中的回答...

需要指定forRoot方法返回的类型,ModuleWithProviders

import { NgModule } from '@angular/core';
import { CONFIG, Config } from './config';

@NgModule({ ... })
export class SomeModule {
static forRoot(config?: Config): ModuleWithProviders {
return {
ngModule: SomeModule,
providers: [
{ provide: CONFIG, useValue: config }
]
};
}
}

关于angular - 配置的 InjectionToken 不适用于 AoT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118919/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com