Angular 覆盖角度2/4分量

Angular 覆盖角度2/4分量,angular,ionic3,angular2-components,Angular,Ionic3,Angular2 Components,我有以下情况:我有一个Angular应用程序(更准确地说,是一个Ionic应用程序),希望有选择地覆盖此应用程序中的组件,以创建同一应用程序的多个变体。考虑一个具有客户特定分支的标准应用程序 在我的基本应用程序中,我声明了如下组件: @组件({ 选择器:“行程详细信息”, templateUrl:'tripDetails.html' }) 导出类TripDetails组件{ @输入()行程:行程; 构造函数(){} } 当然,它包含在我的app.module.ts中: @NgModule({

我有以下情况:我有一个Angular应用程序(更准确地说,是一个Ionic应用程序),希望有选择地覆盖此应用程序中的组件,以创建同一应用程序的多个变体。考虑一个具有客户特定分支的标准应用程序

在我的基本应用程序中,我声明了如下组件:

@组件({
选择器:“行程详细信息”,
templateUrl:'tripDetails.html'
})
导出类TripDetails组件{
@输入()行程:行程;
构造函数(){}
}
当然,它包含在我的app.module.ts中:

@NgModule({
声明:[
...,
TripDetails组件
],
进口:[
...
],
引导:[IonicApp],
入口组件:[
...,
TripDetails组件
],
供应商:[
...
]
})
导出类AppModule{}
在我对同一应用程序的专门化过程中,我想用一个变体(比如TripsDetailSpecialComponent)替换TripsDetailComponent。如何使用Angular的DI实现这一点?到目前为止,我尝试为专用应用程序创建一个新模块,该模块导入原始应用程序并声明新组件,该组件使用相同的选择器进行注释

@NgModule({
声明:[
TripDetails特殊组件
],
进口:[
应用模块
],
引导:[IonicApp],
入口组件:[
TripDetails特殊组件
],
提供者:[]
})
导出类SpecialAppModule{}
当然,我更新了引导以使用新模块:

platformBrowserDynamic().bootstrapModule(CustomerModule);
但是,在使用这种方法时,特殊组件不会在任何地方使用


提前感谢您的帮助

您可以这样做:

{
  path: 'trip',
  component: SOME_CONDITION ? TripDetailsComponent: TripDetailsSpecialComponent
}

或者,如果它们在运行时必须是动态的,您可以尝试以下操作:

您可以执行以下操作:

{
  path: 'trip',
  component: SOME_CONDITION ? TripDetailsComponent: TripDetailsSpecialComponent
}

或者,如果它们在运行时必须是动态的,您可以尝试这样做:

很抱歉,我看不到您正在尝试做什么:这的最终目标是什么?如果我看到它的用途,也许我可以为您找到一个解决方案。尝试改变行为,而不是组件。检查组件模式。@Trichetrich想法是在同一应用程序的不同变体中显示特定于用例的信息。例如,客户关系管理工具可能总是相似的,但根据客户的职业,客户列表应显示不同的信息(例如,汽车车间希望查看汽车的品牌和型号,医生希望查看年龄和疾病)。我的想法是让列表单元格有一个组件,然后替换这个组件,类似于使用
{provide:component,useClass:SpecialComponent}
它看起来有点复杂,因为根据您告诉我的,它只与您的模型相关。如果您想创建一个类似CRM的应用程序,只需创建一个具有通用属性的“通用”组件,而不是创建尝试覆盖所有用例的动态组件。很抱歉,我看不出您正在尝试做什么:最终目标是什么?如果我看到它的用途,也许我可以为您找到一个解决方案。尝试改变行为,而不是组件。检查组件模式。@Trichetrich想法是在同一应用程序的不同变体中显示特定于用例的信息。例如,客户关系管理工具可能总是相似的,但根据客户的职业,客户列表应显示不同的信息(例如,汽车车间希望查看汽车的品牌和型号,医生希望查看年龄和疾病)。我的想法是让列表单元格有一个组件,然后替换这个组件,类似于使用
{provide:component,useClass:SpecialComponent}
它看起来有点复杂,因为根据您告诉我的,它只与您的模型相关。如果您想创建一个类似CRM的应用程序,只需制作一个具有通用属性的“通用”组件,而不是制作试图覆盖所有用例的动态组件。谢谢您的建议。我可能可以用动态组件加载手工制作一些东西。不幸的是,另一个解决方案不起作用,因为它要求我了解基础应用程序中的所有专业知识。谢谢你的建议。我可能可以用动态组件加载手工制作一些东西。不幸的是,另一个解决方案不起作用,因为它要求我了解基础应用程序中的所有专门化。