1

从文档中,我尝试在延迟加载的 Angular 模块中添加以下提供程序...

{ provide: PLURAL_NAMES_TOKEN, multi: true, useValue: morePluralNames }

...但这不起作用。类似的机制在文档中描述如下......

{ provide: ENTITY_METADATA_TOKEN, multi: true, useValue: someEntityMetadata }

这种技术不适用于延迟加载的模块。ENTITY_METADATA_TOKEN 提供程序已在延迟加载模块到达时设置和使用。

该模块应改为注入 EntityDefinitionService 并使用其中一种注册方法直接注册元数据。

class LazyModule {
  constructor(eds: EntityDefinitionService) {
    eds.registerMetadataMap(this.lazyMetadataMap);
  }
  ...
}

这是否意味着我必须使用 EntityDefinitionService 才能在我的延迟加载模块中识别我的复数名称?如果是这样,我该怎么做?我一直无法弄清楚。如果没有,关于我做错了什么的任何想法?

如果需要,我可以提供更多代码,但我主要想知道它是否应该工作,或者我是否需要为延迟加载模块中的复数名称映射做一些不同的事情(以及“不同的东西”究竟是什么)。

4

1 回答 1

1

通过文档,您可以在延迟加载模块中注册自己的 httpUrlGenerator,它对我有用。

export class LazyModule {
    constructor(eds: EntityDefinitionService, hug: HttpUrlGenerator  ) {
        eds.registerMetadataMap(entityConfig.yourEntitiyMetaData);
        hug.registerHttpResourceUrls({
            input: {
                entityResourceUrl: 'xxx/input/',            
                collectionResourceUrl: 'xxx/inputs/'
            }
        });
    }

 }
于 2020-08-21T16:41:19.843 回答