angular - Angular 7 ngBuild:require(filename) 不能在 forRoot() 方法中传递
问题描述
我正在尝试将资产的缓存清除文件名作为我拥有的模块组件的参数传递:
- ../assets/svg/generated/sprint.svg // 文件存在
- 然后我想
require('../assets/svg/generated/sprint.svg')
生成一个缓存破坏文件'sprite-345234dfg54gh6422111111.svg'
- 并在我的组件中使用此文件名
应用模块:
const SPRITE_SRC = {
raw: '../assets/generated/svg/sprite.svg',
required: require('../assets/generated/svg/sprite.svg')
};
console.log(SPRITE_SRC)
// output OK : {
// raw : '../assets/generated/svg/sprite.svg',
// required: 'sprite-345234dfg54gh6422111111.svg'
// }
@NgModule({
entryComponents: [...],
declarations: [...],
imports: [
SvgSpriteModule.forRoot(SPRITE_SRC),
]
})
export class AppModule {}
SvgSpriteModule(这里一切正常):
export interface SvgSpriteConfig {
raw: string;
required: string;
}
export const PaCommonSvgSpriteConfig = new InjectionToken<SvgSpriteConfig>('SvgSpriteConfig');
export class SvgSpriteModule {
static forRoot(config?: SvgSpriteConfig): ModuleWithProviders {
return {
ngModule: SvgSpriteModule,
providers: [{ provide: PaCommonSvgSpriteConfig, useValue: config }]
};
}
}
但是当我尝试在 thsi SvgSpriteModule 的组件中加载此配置时,该required
属性消失了......:
export class SvgSpriteComponent {
constructor(@Inject(PaCommonSvgSpriteConfig) private config: SvgSpriteConfig) {
console.log('SvgSpriteComponent', config);
// output KO : {
// raw : '../assets/generated/svg/sprite.svg'
// }
}
}
我在不理解的情况下尝试了 3 个小时…… require 函数似乎是同步的,但也许它是异步的?我怎样才能解决这个问题 ?
谢谢
解决方案
最后是不可能的...
最后,我直接创建了一个带有缓存无效文件名的精灵。然后,就在这之后,我有一个 shell 脚本,它将找到新创建的精灵的文件名(由于哈希,它是动态的)......然后我创建一个只包含那个的打字稿文件......比如:
export const SvgSpritePath = 'assets/svg/sprite-4c6d366c.svg';
这样,这个文件可以轻松导入,并在 forRoot() 方法中作为参数传递(在我的内部 Angular 公共库中初始化自定义组件)
推荐阅读
- php - 自定义图表 PhpSpreadSheet
- php - 将自定义 HTML 添加到 Wordpress WP-Members 表单
- html - 打开一个手风琴图案会关闭另一个手风琴图案,我该如何禁用它?
- javascript - Typescript debounce函数不调用作为参数传递的函数
- facebook - 如何从顶层删除 Facebook 按钮的可点击区域?
- dependency-injection - nestjs 全局 pubsub 实例和依赖注入
- php - PHPMD 抱怨“日志”的静态使用
- java - 在java中压缩2d图形写入图像大小
- php - oci_bind_by_name 和值类型问题或如何调试
- python - 有没有办法制作也计算出现次数的虚拟变量?