作者:雲悳蕲黇 | 来源:互联网 | 2022-12-08 12:10
我正在使用Angular 6,当用户按名称单击选项卡加载组件时,我试图按名称动态加载组件,我正在使用以下代码,巫婆在build上运行完美,但在build --production上不起作用
loadTabData(tabname: any) {
this.selectedTab = tabname;
var factories = Array.from(this.resolver["_factories"].keys());
var factoryClass = >(
factories.find((x: any) => x.name === tabname)
);
let viewCOntainerRef= this.comLoad.viewContainerRef;
viewContainerRef.clear();
const factory = this.resolver.resolveComponentFactory(factoryClass);
let compOnentRef= viewContainerRef.createComponent(factory);
componentRef.instance.serviceId = this.serviceId;
}
当用户单击选项卡时,我在生产中加载相关组件,则返回以下错误
错误错误:未找到未定义的组件工厂。您是否将其添加到@ NgModule.entryComponents?在e.resolveComponentFactory(main.b98d71b6b5a909371223.js:1)在Wt(main.b98d71b6b5a909371223.js:1)处
AYKHO..
10
实际上,由于角度编译器不会更改组件名称,因此这在开发和构建中效果很好。在这条线
var factories = Array.from(this.resolver["_factories"].keys());
var factoryClass = >(
factories.find((x: any) => x.name === tabname)
);
您正在按名称搜索组件,但在生产中此名称已更改,您可以通过打印工厂来检测到它
而不是像这样按组件选择器搜索;
const factories = Array.from(this.resolver["_factories"].values());
const factory: any = factories.find(
(x: any) => x.selector === this.selector
);
选择器未更改生产
希望这对您有帮助
1> AYKHO..:
实际上,由于角度编译器不会更改组件名称,因此这在开发和构建中效果很好。在这条线
var factories = Array.from(this.resolver["_factories"].keys());
var factoryClass = >(
factories.find((x: any) => x.name === tabname)
);
您正在按名称搜索组件,但在生产中此名称已更改,您可以通过打印工厂来检测到它
而不是像这样按组件选择器搜索;
const factories = Array.from(this.resolver["_factories"].values());
const factory: any = factories.find(
(x: any) => x.selector === this.selector
);
选择器未更改生产
希望这对您有帮助